指的是编译器会将程序中多个声明合并为一个声明,避免遗漏
interface A { x:number } interface A { y:number } let a:A = { x:1, y:2 }
1、对于非函数成员,必须保持类型相同,否则无法合并
2、 对于函数成员,若参数类型字面量类型,则排在第一位,多个接口则按照后覆盖前
tsinterface A {
X: NUMBER;
foo (bar:number):number;//5
foo (bar:"a"):number;//2
}
interface A {
X: NUMBER;
foo (bar:string):string;//3
foo (bar:number):number;//4
foo (bar:"b"):number;//1
}
//定义接口的实现时,由于两个接口合并后,故此处需要宽泛的类型
let a:A = {
x:1,
foo(bar:any){
return bar
}
}
命名空间中函数不允许重复导出
命名空间和类、函数合并时,只能在其后面声明否则报错 对于和枚举类型合并则没有要求
tsfunction Lib(){}
namespace Lib {
export let version = "1.0"
}
console.log(Lib.version) // 1.0
class C {}
namespace C {
export let state = 1
}
console.log(C.state)//1
enum Color {
red,
blue,
green
}
namespace Color {
export function mix(){}
}
console.log(Color),//相当于为枚举添加mix方法
本文作者:RKLS
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!