2016-06-10 2 views
1

여기에 일부 tsconfig 옵션이없는 것 같습니다.자동으로 모듈의 typescript 정의 파일을 바꿉니다.

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "module": "commonjs", 
    "removeComments": true, 
    "noImplicitAny": false, 
    "preserveConstEnums": true, 
    "declaration": true, 
    "suppressImplicitAnyIndexErrors": true, 
    "outDir": "../js" 
    }, 
    "filesGlob": [ 
    "./**/*.ts", 
    "!./node_modules/**/*.ts" 
    ] 
} 

내 선언이 자동으로 생성됩니다 : 내 tsconfig의 존재와

export class HelloWorld { 
    constructor(public greeting: string){} 
} 

: 예를 들어,

내가 NPM 모듈을 만드는 오전 : 일을

무엇 임은 아주 간단합니다 다음과 같이 보입니다.

export declare class HelloWorld { 
    greeting: string; 
    constructor(greeting: string); 
} 

하지만 실제로 다른 프로젝트에서 npm 패키지를 설치하면 제대로 작동하지 않습니다. 나는 패키지를 가져올 때 나는 사용해야합니다 :

내가 모듈 declare module "hello-world" {...}에서 선언 파일을 포장 할 때 import hello = require("hello-world");

가 원하는 그런 다음 내가 가져올 수 있다는 것을 발견

(예를 들어)

import hello = require("hello-world/js/index"); 

생성 된 정의 파일을 수동으로 줄 바꿈하는 것은 옵션 자체가 아니기 때문에 언제든지 자체적으로 다시 쓸 수 있습니다. 패키지의 이름을 package.json에서 가져 와서 자동으로 해당 모듈에 정의를 래핑하는 옵션이 있습니까?

+0

당신은 '수출 기본 클래스하여 HelloWorld'를 시도 않은 : 당신이 쓸 때

다음 이러한 변화에 패키지를 설치 한 후, 컴파일러는 그것을 해결할 수 있습니까? – baryo

+0

@baryo 예 차이가 없음 – Tom

+0

package.json을 게시 할 수 있습니까? – baryo

답변

1

은 ...

{ 
    "name": "hello-world", 
    "typings": "hello-world.d.ts", 
    ...etc... 
} 

당신이 package.json에 지정된 typings 속성을 가지고 있는지 확인 ... 또는 index.d.ts 지명 할 수 있도록 정의 파일을 변경합니다.

import hello = require("hello-world"); 

More details

+0

' 'hello-world'에서 {HelloWorld} 가져 오기; 새로운 HelloWorld ("여기에서 인사하기"); –

+0

@IvanZlatev 나는 항상 es6 모듈을 사용하지만, 그것도 사용했기 때문에 require 만 사용했다. 정확하게 작품을 요구하는 나의 기억은 천천히 퇴색합니다. –

관련 문제