angular-ui-router/angular-ui-router.d.ts
νμΌμ μ¬μ©ν΄ 보μλλ° λ¬Έμ κ°μμμ΅λλ€.@ types / angular-ui-routerλ₯Ό μ¬μ©ν λ angular-ui-routerκ° μλνμ§ μμ΅λλ€.
"Module 'angular' has no exported member 'ui'"
μ΄μ λͺ¨λ νμΌμ΄ λΉ¨κ°μμ΄λ©° μ»΄νμΌλμ§ μμ΅λλ€.
<reference types="angular" />
μ ν¨κ» import * as angular from 'angular';
νλ©΄ μλνμ§ μλ κ² κ°μ΅λλ€.
angular-ui-bootstrapμμλ κ°μ μΌμ΄ λ°μν©λλ€.
@types/angular
μ μμ‘΄νλ λͺ¨λμ μμ ν μμλμμ΅λλ€. κ°λ μ μ λ³μλ₯Ό μ¬μ©νμ§ μκ³ import * as angular from 'angular'
ν λ€μ angular.ui.bootstrap
, angular.translate
, angular.ui
μ κ°μ λͺ¨λ λ€μ μ€νμ΄μ€μ μ‘μΈμ€νλ €κ³ νλ©΄ λͺ¨λ μ€λ₯ Module 'angular' has no exported member 'ui'
μλ μ½λλ μ€ν¨ν©λλ€.
'use strict';
import * as angular from 'angular';
class Config {
static $inject = ['$stateProvider', '$urlRouterProvider'];
constructor($stateProvider: angular.ui.IStateProvider, $urlProvider: angular.ui.IUrlRouterProvider) {
/*...*/
}
}
angular.module('Module', []).config(Config);
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/10170μ μν΄ μμ λμ΄μΌν©λλ€.
λͺ¨λλ‘ μ¬μ©ν μ μμ΅λλ€.
import * as angular from 'angular';
import "angular-ui-router";
class Config {
static $inject = ['$stateProvider', '$urlRouterProvider'];
constructor($stateProvider: angular.ui.IStateProvider, $urlProvider: angular.ui.IUrlRouterProvider) {
/*...*/
}
}
angular.module('Module', []).config(Config);
λλ κΈλ‘λ²λ‘ μ¬μ©νμ§λ§ /// <reference types=... />
/// <reference types="angular" />
/// <reference types="angular-ui-router" />
class Config {
static $inject = ['$stateProvider', '$urlRouterProvider'];
constructor($stateProvider: angular.ui.IStateProvider, $urlProvider: angular.ui.IUrlRouterProvider) {
/*...*/
}
}
angular.module('Module', []).config(Config);
@mhegazy λ @types
μ¬μ©ν λ 2.0+μ μλ‘μ΄ λμμ
λκΉ? ν λ²λ§ ν¬ν¨νλ©΄ μ΄λμλ μ¬μ©ν μμλ "μ§μ ν"μ μμ κ°μ§ μ μμ΅λκΉ?
@types/angular-ui-router
λ° @types/angular-ui-bootstrap
μ (λ) μ¬μ ν κΉ¨μ‘μ΅λλ€.
@mhegazy λ
ν μ μμ΅λλ€. /// <reference types="angular" />
λ μ»΄νμΌμμ ng
μ¬μ©ν μ μλλ‘ν΄μΌν©λλ€.
@ types / angular-ui-router λ° @ types / angular-ui-bootstrapμ μ¬μ ν ββμμλμμ΅λλ€.
https://github.com/DefinitelyTyped/DefinitelyTyped/tree/types-2.0 μ μ΅μ λ²μ μ΄ λμκ² μ ν©ν©λλ€. λΉμ μκ² ν¨κ³Όκ°μλ κ²μ μ§μ ν μ μμ΅λκΉ?
κ°λλ₯Ό μ΄λ»κ² κ°μ Έ μ€λμ?
import * as angular from 'angular'
μμ΅λλ€. angular.ui.IStateProvider
( angular-ui-router
)λ₯Ό μ¬μ©νλ €κ³ νλ©΄ κ°λμ ββμ‘΄μ¬νμ§ μμ΅λλ€. λ€λ₯Έ νμΌ (λ΄ κΈ°λ³Έ λͺ¨λ)μ angular-ui-routerλ₯Ό μΆκ°νλλΌλ μ΄μ λͺ¨λ νμΌμ ν¬ν¨ν΄μΌν©λκΉ?
κ·Έκ²λ κ°μ ΈμμΌν©λλ€. import "angular-ui-router";
λλ μ¬κΈ°μ μ ν μ°Έμ‘° μΆκ° /// <reference types="angular-ui-router" />
tsconfig.jsonμμ μ΄μ λ°©μμΌλ‘ μλνλλ‘ μ ννμμμ€. μ§κΈμ νλ‘μ νΈλ₯Ό 리ν©ν°λ§ ν μ μμ΅λλ€.
tsconfig.jsonμμ μ΄μ λ°©μμΌλ‘ μλνλλ‘ μ ννμμμ€.
"μ€λλ"λ°©μμ 무μμ λκΉ?
νμ΄νμ΄λ tsdμμ μ»μ μ μΈ νμΌμ μ¬μ©νλ κ²½μ° λ³κ²½μμ΄ μλν©λλ€. μ΄κ²μ npmμ @types
ν¨ν€μ§μλ§ ν΄λΉλ©λλ€. μ§κΈ μ¬μ©νμ§ μμΌλ €λ©΄ μ¬μ©ν νμκ° μμ΅λλ€.
λλ κ°μ λ¬Έμ κ° μμ΅λλ€.
κ°μ λ¬Έμ ... λ°©κΈ @ types / angular μ€μΉ
typescript νμΌμμ κ°μ Έμ¨ κ°λ :
import * as angular from 'angular';
κ·Έλ¬λ ngμμλ ui λ€μ μ€νμ΄μ€λ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ»κΈ° :
λͺ¨λ 'angular'μ λ΄ λ³΄λΈ λ©€λ² 'ui'κ° μμ΅λλ€.
μ μ΄κ²μ΄ λ«ν μμ΅λκΉ? κ·Έκ²μ κ²°μ½ κ³ μ³μ§μ§ μμ κ²μμ μλ―Έν©λκΉ, μλλ©΄ λ€λ₯Έ λ¬Έμ κ° μμ΅λκΉ? (μ¬μ ν λλ₯Ό μν΄ λΆμμ Έ)
λλ μ¬μ ν λ§κ° μ‘μ΄
κ·Έλ¦¬κ³ μ¬μ ν
@asadsahi μ΄λ @types/angular
μ€μ λ‘ ui
νμμ΄ μκΈ° λλ¬Έμ
λλ€. μ΄ λ©€λ²λ @types/angular-ui-router
λ‘ μ μλ©λλ€.
λ³λλ‘ μ€μΉν΄μΌν©λλ€.
npm i -D @types/angular-ui-router
μ무λ μμ§ ν΄κ²°μ±
μ μ°Ύμμ΅λκΉ?
@mhegazy ν°μΌμ λ€μ μ΄ μ μμ΅λκΉ?
angular-ui-routerλ₯Ό 1.0.0-beta.1μμ 1.0.0-rc.1λ‘ μ
κ·Έλ μ΄λνλ €κ³ ν λμ΄ λ¬Έμ κ° λ°μνμ΅λλ€. λλ λν TSλ₯Ό μ
κ·Έλ μ΄λνκ³ @typesμ μ°¬μ±νμ¬ νμ΄νμ μμ κ³ μΆμ΅λλ€ ...μ΄ λͺ¨λ κ²μ΄ yeoman-fountain μμ± angular1 μμ© νλ‘κ·Έλ¨μμ μ»μμ΅λλ€. λ΄ μκ°μ λλΉνκ³ μκΈ° λλ¬Έμ νκ°λ©λλ€.
@mhegazy ν°μΌμ λ€μ μ΄μ΄ μ£Όμκ² μ΅λκΉ?
μ΄κ²μ μ¬μ ν ββλ¬Έμ μ λλ€. λΉλΆκ° λ΄ ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
"fix-duplicate-dts": "rimraf node_modules/@types/oclazyload/node_modules/@types/angular && rimraf node_modules/@types/angular-ui-bootstrap/node_modules/@types/angular && rimraf node_modules/@types/ngtoaster/node_modules/@types/angular && rimraf node_modules/@types/angular-translate/node_modules/@types/angular && rimraf node_modules/@types/angular-mocks/node_modules/@types/angular && rimraf node_modules/@types/angular-gridster/node_modules/@types/angular && rimraf node_modules/@types/angular-storage/node_modules/@types/angular && rimraf node_modules/@types/ui-select/node_modules/@types/angular",
"postinstall": "npm run fix-duplicate-dts",
"postuninstall": "npm run fix-duplicate-dts"
λλ‘λ μλμΌλ‘ μμ μ μ€νν΄μΌνμ§λ§ λλΆλΆμ κ²½μ° μ€μΉ ν μ€ν¬λ¦½νΈλ‘ μλ£λ©λλ€.
λ΄ μ’
μμ±μ @types/[email protected]
μ
κ·Έλ μ΄λ ν ν λμΌν Module 'angular' has no exported member 'xxx'.
μ€λ₯κ° λ°μνμ΅λλ€.
μ κ²½μ°μλ node_modulesμ μ¬λ¬ κ°λ μ ν μ μμ κ΄λ ¨μ΄ μμ΅λλ€. Angular μ νμ node_modules/@types/angular
λ° node_modules/@types/ng-file-upload/node_modules/@types/angular
.
μ΄κ²μ μ€μ΄ λ€λ₯Έ λ²μ μΌλ‘ κ°λλ₯Ό ν΄κ²°νλ€λ μ¬μ€ λλ¬Έμ λλ€. yarn.lock νμΌμ ν΄μλκ° λ€λ₯Έ κ°λμ λν λ νλͺ©μ΄ μμ΅λλ€.
"@types/angular@*":
version "1.6.7"
resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.7.tgz#8935a2b4a796fe7ca4f59f533f467804722fb0c4"
dependencies:
"@types/jquery" "*"
"@types/[email protected]":
version "1.6.32"
resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.32.tgz#fc791aad038227d9413eb5e552993e1076f8a509"
"@types/ng-file-upload@^11.1.31":
version "11.1.34"
resolved "https://registry.yarnpkg.com/@types/ng-file-upload/-/ng-file-upload-11.1.34.tgz#670fd0515c8e08668b27b7bbe30356b3b8011780"
dependencies:
"@types/angular" "*"
yarn.lockμ μ κ±°νκ³ yarn μ€μΉλ₯Ό λ€μ μ€ννλ©΄ λ¬Έμ κ° ν΄κ²°λμμ§λ§ μ κ²½μ°μλ λ€λ₯Έ μ’ μμ±μ΄ λ무 λ§μ΄ μμ λμμ΅λλ€.
yarn install --flatμ μ¬μ©νλ©΄ μλ§λ λ¬Έμ κ° ν΄κ²°λμμ μ μμ§λ§ λͺ¨λ μ’ μμ±μ΄ ν΄κ²°λλ λ°©μμ λ³κ²½νκ³ μΆμ§ μμμ΅λλ€.
κ·Έλμ yarn.lock νμΌμ μλμΌλ‘ λ³κ²½νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
"@types/angular@*", "@types/[email protected]":
version "1.6.32"
resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.32.tgz#fc791aad038227d9413eb5e552993e1076f8a509"
"@types/ng-file-upload@^11.1.31":
version "11.1.34"
resolved "https://registry.yarnpkg.com/@types/ng-file-upload/-/ng-file-upload-11.1.34.tgz#670fd0515c8e08668b27b7bbe30356b3b8011780"
dependencies:
"@types/angular" "*"
κ°μ₯ μ μ©ν λκΈ
κ°μ λ¬Έμ ... λ°©κΈ @ types / angular μ€μΉ
typescript νμΌμμ κ°μ Έμ¨ κ°λ :
import * as angular from 'angular';
κ·Έλ¬λ ngμμλ ui λ€μ μ€νμ΄μ€λ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ»κΈ° :
λͺ¨λ 'angular'μ λ΄ λ³΄λΈ λ©€λ² 'ui'κ° μμ΅λλ€.