打字稿冲突变量名称

时间:2013-04-04 15:56:41

标签: node.js typescript tsc

我正在尝试编译一些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()?)

1 个答案:

答案 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