假设我想将以下原型添加到String类中。
String.prototype.beginsWith = function (string) {
return(this.indexOf(string) === 0);
};
我需要将beginWith
添加到lib.d.ts,否则它将无法编译:
declare var String: {
new (value?: any): String;
(value?: any): string;
prototype: String;
fromCharCode(...codes: number[]): string;
//Here
}
文件被锁定,我无法编辑。
我发布我可以在通话前声明var String: any
,但我可以将其内置吗?
答案 0 :(得分:6)
您不需要修改lib.d.ts而是首先扩展String接口,然后将新方法包含到您希望扩展的对象的原型链中。
例如
interface String {
beginsWith(text: string): bool;
}
然后实现新功能并将其添加到原型链
String.prototype.beginsWith = function (text) {
return this.indexOf(text) === 0;
}
现在,您将在调用代码中获得intellisense并按预期工作。