TS编译器会将多个名字相同的声明合并为一个声明,合并后会拥有多个声明的特性
在TS中接口和命名空间是可以多次重复声明的,TS会将这些同名声明合并
声明结果
TS中一个声明的创建结果分为三种:命名空间、类型、值
接口合并
interface Inter {
name: string
}
interface Inter {
age: number
}
const info: Inter = {
name: '阿坤',
age: 22.5
}
- 非函数成员:相同名称的必须类型也相同,否则报错
- 函数成员:同名的函数成员都会被当做函数的重载,最后面的会被作为实体函数
命名空间合并
namespace A {
export const a = 1
}
namespace A {
export const b = 2
}
A.a === 1
- 同名命名空间的导出内容会被合并在一起