声明合并的用例是什么?

时间:2017-07-03 11:53:30

标签: typescript

我正在阅读有关TypeScript中的declaration merging的内容,我很难解决它的用例,特别是对于接口。

在他们的文档中,他们有这个例子:

  

即,在示例中:

interface Cloner {
    clone(animal: Animal): Animal;
}

interface Cloner {
    clone(animal: Sheep): Sheep;
}

interface Cloner {
    clone(animal: Dog): Dog;
    clone(animal: Cat): Cat;
}
     

三个接口将合并以创建单个声明:

interface Cloner {
    clone(animal: Dog): Dog;
    clone(animal: Cat): Cat;
    clone(animal: Sheep): Sheep;
    clone(animal: Animal): Animal;
}

为什么要创建三个单独的接口而不是结果声明?

1 个答案:

答案 0 :(得分:2)

例如,您可能希望向窗口对象添加方法,因此您将执行此操作:

interface Window {
    myMethod(): string;
}

window.myMethod = function() {
    ...
}

当您需要填充时,这非常有用:

interface String {
    trimLeft(): string;
    trimRight(): string;
}

if (!String.prototype.trimLeft) {
    String.prototype.trimLeft = function() { ... }
}

if (!String.prototype.trimRight) {
    String.prototype.trimRight = function() { ... }
}