Declaration Merging
typescript에서 같은 이름으로 선언을 했을 경우에는 병합이 되도록 설계가 되어 있어 다음과 같은 병합이 가능합니다. 단, class와 type은 같은 이름을 허용하지 않습니다.
interface:
interface Human {
name: string;
}
interface Human {
age: number;
}
interface Human {
isHuman: boolean
}
// 위 코드와 같습니다.
interface Human {
name: string;
age: number;
isHuman: boolean;
}namespace:
namespace Animals {
export class Zebra {}
}
namespace Animals {
export interface Legged {
numberOfLegs: number;
}
export class Dog {}
}단, export하지 않은 내용을 병합되지 않습니다.
enum:
enum Animals {
ZEBRA = 1,
}
enum Animals {
Dog = 2,
}
enum Animals {
ZEBRA = 1,
Dog = 2,
}