banner
banner
banner
NEWS LETTER

TS-声明合并

Scroll down
  • 类不能与其它类或变量合并
  • 针对同一个名字的两个独立声明合并为单一声明。
  • 合并后的声明同时拥有原先两个声明的特性。
  • 任何数量的声明都可被合并;不局限于两个声明

基础概念

  • ts中的声明会创建三种实体之一:命名空间,类型或值。
  • 创建命名空间的声明: 新建一个命名空间,它包含了用(.)符号来访问使用的名字
  • 创建类型的声明是:用声明的模型创建一个类型并绑定到给定的名字上
  • 创建值的声明: 创建在JavaScript输出中看到的值

合并接口: 把双方的成员放到一个同名的接口里

  • 接口的非函数的成员应该是唯一的(就是上面接口有一个a ,下面的接口最好不要有a),且类型要相同
    1
    2
    3
    4
    5
    6
    7
    8
    interface Box {
    a: string,
    b :string
    }
    interface Box {
    c : string
    }
    let box : Box = {a : "d" , b : "k" ,c : "10"}
  • 对于函数成员,每个同名函数声明,都会当成这个函数的一个重载,且后来合并的接口优先级更高
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    interface Box {
    clone (animal : Dog) : Dog
    }
    interface Box {
    clone (animal : Sheep) : Sheep
    clone (animal : Fish) : Fish
    clone (tagName : "yyyy") : vjukg
    }
    等同于 :interface Box{
    clone (tagName : "yyyy") : vjukg //参数的类型是单一的字符串字面量的也会提到最前面
    clone (animal : Sheep) : Sheep //后来合并的接口顺序往前
    clone (animal : Fish) : Fish
    clone (animal : Dog) : Dog
    }

合并命名空间: namespace xxx{}

  • 非export成员合并后仅在原有命名空间可见(因为没有导出),无法访问非export成员

命名空间与类和函数和枚举类型合并: 合并结果包含两者的声明

其他文章
cover
TS-装饰器
  • 24/11/01
  • 11:40
  • TypeScript
cover
TS-模块和命名空间
  • 24/11/01
  • 11:40
  • TypeScript
目录导航 置顶
  1. 1. 基础概念
  2. 2. 合并接口: 把双方的成员放到一个同名的接口里
  3. 3. 合并命名空间: namespace xxx{}
  4. 4. 命名空间与类和函数和枚举类型合并: 合并结果包含两者的声明
请输入关键词进行搜索