我正在尝试编译一些Node.js Typescript代码,但我遇到了两个名为console
的变量的问题。从本质上讲,Node.js有一个console.trace()
方法,而普通的浏览器端Javascript则没有。我的Typescript文件中引用了node.d.ts,其他一切工作正常。 node.d.ts将console
声明为变量,但lib.d.ts也是如此,它似乎覆盖了Node.js版本。将--nolib添加到编译器只会引发数百个关于未定义符号的错误。有没有办法绕过这个而不编辑lib.d.ts? (或者投射控制台:(<any>console).trace()
?)
答案 0 :(得分:2)
您可以编辑node.d.ts定义,使其扩展Console接口的现有lib.d.ts定义。
在您的node.d.ts中,将declare var console
替换为:
interface Console {
log(...data: any[]): void;
info(...data: any[]): void;
error(...data: any[]): void;
warn(...data: any[]): void;
dir(obj: any): void;
timeEnd(label: string): void;
trace(label: string): void;
assert(expression: any, ...message: string[]): void;
}
现在你的TypeScript将在没有强制转换的情况下编译到any