覆盖先前声明的TypeScript函数

时间:2015-04-10 20:12:17

标签: javascript typescript

在我的IDE中,所有.ts TypeScript文件都编译成一个文件。这包括我的单元测试文件。这允许我在我的测试和构建中进行类型检查,只需一步即可完成。但是,当我启动我的开发服务器时,它无法找到茉莉花方法describe(),所以如果它没有定义,我就会重载它。

// If jasmine functions are not defined (i.e. not running tests) skip functions
if (describe === undefined) {
  var describe = (function () { // Duplicate identifier 'describe'
    return function (description: string, callback: () => void) { return }
  })();
}

在jasmine.d.ts

declare function describe(description: string, specDefinitions: () => void): void;

问题是TypeScript正确识别我正在重新定义现有函数,但我打算这样做(因此if (describe === undefined))。

问题:

有没有办法来抑制这个错误?我想我正在寻找像function describe() implements jasmine.describe这样的东西,但据我所知,这只适用于课程。

注意:我正在使用TypeScript 1.4

2 个答案:

答案 0 :(得分:3)

您可以使用全局对象。

如果代码在浏览器中执行:

window['describe'] = /* ... */

或使用Node.js:

global['describe'] = /* ... */

或者,您可以使用eval

答案 1 :(得分:0)

最简单的解决方法是编辑jasmine.d.ts以注释掉describe函数声明。这样做的缺点是您正在编辑库定义,每次更新定义文件时都必须重做它。