使用插件在 Netbeans 上扩展 TypeScript 中的内置对象

Extending builtin objects in TypeScript on Netbeans with plugin

我正在尝试将现有 JavaScript 代码编写成 TypeScript 并 运行 编写成 Object.defineProperty 扩展内置对象的问题,例如String.prototype.

Object.defineProperty(String.prototype, 'testFunc',
{ value: function():string {return 'test';}
});

var s1:string = 'abc'.testFunc();             // Property 'testFunc' does not exist on type 'string'
var s2:string = String.prototype.testFunc();  // Property 'testFunc' does not exist on type 'String'


Object.defineProperty(Object, 'testFunc',
{ value: function():string {return 'test';}
});

var s:string = Object.testFunc();             // Property 'testFunc' does not exist on type 'ObjectConstructor'

它被正确地 t运行 指定为 JavaScript,然而,Netbeans 8.1 带有 TypeScript plugin 声明上面注释中列出的错误.

我对 declareinterface 的所有混淆实验都不匹配任何正确的语法。我不知道如何让它工作。

如何扩展 TypeScript 中的内置对象并让 IDE 接受它?

在尝试了 1001 次错误之后,我找到了一个可行的解决方案。到现在它似乎做我想做的事。

interface String { strFunc:Function; }

Object.defineProperty(String.prototype, 'strFunc',
{ value: function():string {return 'test';}
});

var s1:string = 'abc'.strFunc();
var s2:string = String.prototype.strFunc();


interface ObjectConstructor { objFunc:Function; }

Object.defineProperty(Object, 'objFunc',
{ value: function():string {return 'test';}
});

var s:string = Object.objFunc();

// objFunc should not work on strings:
var s:string = 'a string instance'.objFunc(); // Property 'testFunc' does not exist on type 'string'