天天看點

Typescript中聲明合并

聲明合并

一個辨別符可以表示一個值、也可以表示一個類型或者一個命名空間。對于同一個辨別符而言,它可以同時表示多個含義。如果同一聲明空間内使用的辨別符必須唯一。如果同一聲明空間記憶體在同名的聲明時,編譯器會嘗試将所有同名的聲明合并為一個聲明。如果無法進行聲明合并,就會産生編譯錯誤。合并的會按照值對值、類型對類型,命名空間對命名空間的方法合并。

const zss = 5;
interface People {
    name: 'test',
    age: 22
}
namespace Tea {}      
interface X {
    [prop: string]: string;
}
interface X {
    [prop: number]: string;
}
interface People {
    [prop: string]: string;
    [prop: number]: string;
}      

枚舉聲明合并

enum X {
    Y
}
enum X {
    U = 6,
}
enum X {
    R = 7,
}
let o: X;
o = X.Y;
o = X.U;
o = X.R;      

其餘

class People {
    inner: People.Inner = new People.Inner();
}
namespace People {
    export class Inner {}
}