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

时间:2016-05-28 19:41:44

标签: javascript netbeans typescript extend built-in

我正在尝试将现有的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'

它被正确地翻译成JavaScript,然而,带有TypeScript plugin Netbeans 8.1 声称错误列为上述评论。

我对declareinterface的所有混乱实验与任何正确的语法都不匹配。我不知道如何让它发挥作用。

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

1 个答案:

答案 0 :(得分:1)

在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'