我正在阅读有关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; }
为什么要创建三个单独的接口而不是结果声明?
答案 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() { ... }
}