Definitelytyped: @ types / angular-ui-router | angular-ui-bootstrap | angular-translate "λͺ¨λ“ˆ 'angular'에 λ‚΄ 보낸 멀버 'ui'κ°€ μ—†μŠ΅λ‹ˆλ‹€."

에 λ§Œλ“  2016λ…„ 07μ›” 17일  Β·  19μ½”λ©˜νŠΈ  Β·  좜처: DefinitelyTyped/DefinitelyTyped

  • [x]이 μ €μž₯μ†Œμ—μ„œ μ΅œμ‹  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);
@types Bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

같은 문제 ... 방금 @ types / angular μ„€μΉ˜

typescript νŒŒμΌμ—μ„œ κ°€μ Έμ˜¨ 각도 :
import * as angular from 'angular';

κ·ΈλŸ¬λ‚˜ ngμ—μ„œλŠ” ui λ„€μž„ 슀페이슀λ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

μ–»κΈ° :

λͺ¨λ“ˆ 'angular'에 λ‚΄ 보낸 멀버 'ui'κ°€ μ—†μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  19 λŒ“κΈ€

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 은 (λŠ”) μ—¬μ „νžˆ κΉ¨μ‘ŒμŠ΅λ‹ˆλ‹€.

clipboard01

@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" "*"
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰