TS编译器会将多个名字相同的声明合并为一个声明,合并后会拥有多个声明的特性
在TS中接口和命名空间是可以多次重复声明的,TS会将这些同名声明合并

声明结果

TS中一个声明的创建结果分为三种:命名空间、类型、值
image.png

接口合并

  1. interface Inter {
  2. name: string
  3. }
  4. interface Inter {
  5. age: number
  6. }
  7. const info: Inter = {
  8. name: '阿坤',
  9. age: 22.5
  10. }
  1. 非函数成员:相同名称的必须类型也相同,否则报错
  2. 函数成员:同名的函数成员都会被当做函数的重载,最后面的会被作为实体函数

命名空间合并

  1. namespace A {
  2. export const a = 1
  3. }
  4. namespace A {
  5. export const b = 2
  6. }
  7. A.a === 1
  • 同名命名空间的导出内容会被合并在一起