1

假设我想将以下原型添加到 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在通话之前声明,但我可以内置它吗?

4

1 回答 1

6

您无需修改​​ lib.d.ts 而是先扩展 String 接口,然后将新方法包含到您希望扩展的对象的原型链中。

例如

interface String {
   beginsWith(text: string): bool;
}

然后实现新功能并将其添加到原型链中

String.prototype.beginsWith = function (text) {
    return this.indexOf(text) === 0;
}

现在您将在调用代码中获得智能感知并按预期工作。

于 2013-02-04T07:53:12.677 回答