打字稿 - 修改lib.d.ts

时间:2013-02-04 03:41:00

标签: typescript

假设我想将以下原型添加到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,但我可以将其内置吗?

1 个答案:

答案 0 :(得分:6)

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

例如

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

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

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

现在,您将在调用代码中获得intellisense并按预期工作。