学习呦
14 10月 2025 3 min read

声明合并+Declaration+Merging

Written by 米豆

interface和namespace声明的类型可以合并,合并的方法就是定义相同名称的类型

简单例子解释概念

interface Box {
height: number;
width: number;
}
interface Box {
scale: number;
}
let box: Box = { height: 5, width: 6, scale: 10 };

合并的时候会根据属性的类型等有一个排序

interface Document {
createElement(tagName: any): Element;
}
interface Document {
createElement(tagName: "div"): HTMLDivElement;
createElement(tagName: "span"): HTMLSpanElement;
}
interface Document {
createElement(tagName: string): HTMLElement;
createElement(tagName: "canvas"): HTMLCanvasElement;
}


// 合并后
interface Document {
createElement(tagName: "canvas"): HTMLCanvasElement;
createElement(tagName: "div"): HTMLDivElement;
createElement(tagName: "span"): HTMLSpanElement;
createElement(tagName: string): HTMLElement;
createElement(tagName: any): Element;
}

命名空间的合并要注意,在命名空间下的成员是导出的(也就是export的)要不然会找不到这个没有导出的成员

↑