- 类不能与其它类或变量合并
- 针对同一个名字的两个独立声明合并为单一声明。
- 合并后的声明同时拥有原先两个声明的特性。
- 任何数量的声明都可被合并;不局限于两个声明
基础概念
- ts中的声明会创建三种实体之一:命名空间,类型或值。
- 创建命名空间的声明: 新建一个命名空间,它包含了用(.)符号来访问使用的名字
- 创建类型的声明是:用声明的模型创建一个类型并绑定到给定的名字上
- 创建值的声明: 创建在JavaScript输出中看到的值
合并接口: 把双方的成员放到一个同名的接口里
- 接口的非函数的成员应该是唯一的(就是上面接口有一个a, 下面的接口最好不要有a),且类型要相同1 
 2
 3
 4
 5
 6
 7
 8interface 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
 14interface 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成员
 
             
             
             
    