Gitsunmin

TIL

TIL
(=Today I Learned)

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,
}