내 TypeScript 코드에서 다음 과 같이 bunyan 이라는 타사 라이브러리를 사용하고 있습니다 .
private logger: bunyan.Logger = bunyan.createLogger({name: "MyClass"});
TypeScript는 변수를 확인할 수 없기 때문에 TypeScript bunyan
컴파일러가 작동하도록하기 위해 이렇게합니다.
import * as bunyan from "bunyan";
불행히도 이로 인해 다음 JavaScript 출력이 발생합니다.
var bunyan = require("bunyan");
이 require
명령문은 브라우저에서 작동하지 않으므로 ( Requirejs 구현을 사용하지 않는 경우 ) 다음을 받게됩니다 Uncaught ReferenceError: require is not defined
..
실제로 나는 브라우저에 사용할 수 require
있는 bunyan.min.js
(브라우저 버전) 이 있기 때문에 컴파일 된 자바 스크립트 에이 문장이 필요하지 않습니다 . 그러나 TypeScript 컴파일러가 알 수없는 참조에 대해 불평하지 않고 TypeScript 코드에서 bunyan 가져 오기를 피할 수있는 방법은 무엇입니까?
TypeScript 1.8을 사용하고 있으며 이것은 TypeScript 컴파일러 구성입니다.
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noImplicitAny": false,
"removeComments": true,
"target": "es5"
},
"exclude": [
"node_modules",
"typings/browser",
"typings/browser.d.ts"
]
}
with 및에 declare
대한 모듈을 선언 하려면 을 사용해야 합니다 .bunyan
Logger
createLogger
declare module bunyan {
export interface Logger {
info(message: string): any;
warn(message: string): any;
}
export function createLogger(options: any): Logger;
};
class MyClass {
private logger: bunyan.Logger = bunyan.createLogger({name: "MyClass"});
}
TypeScript 의 모든 이점을 얻을 수 있도록 여기에있는 것과 같은 유형 지정 선언 파일을 사용하는 것이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다