使用插件在 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 声明上面注释中列出的错误.
我对 declare
和 interface
的所有混淆实验都不匹配任何正确的语法。我不知道如何让它工作。
如何扩展 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'
我正在尝试将现有 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 声明上面注释中列出的错误.
我对 declare
和 interface
的所有混淆实验都不匹配任何正确的语法。我不知道如何让它工作。
如何扩展 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'