타입스크립트 - 네임스페이스
name spaces
라이브러리를 가져다 쓰다보면 남이 만든 인터페이스와 의도치 않게 병합되는 경우들이 생기는데,
이러한 병합을 방지하기 위해 사용하는 인터페이스
1
2
3
4
5
6
7
8
9
10
11
namespace Example {
interface Inner {
test: string;
}
type test = number;
}
// Namespace 'Example' has no exported member 'Inner'.
const ex1: Example.Inner = {
test: "hello"
};
- 네임스페이스 타입을 사용하려면 앞에 export를 작성해주어야 한다.
1
2
3
4
5
6
7
8
namespace Example {
export interface Inner {
test: string
}
}
const ex2: Example.Inner = {
test: 'hello'
}
- 네임스페이스 자체를 자바스크립트 값으로 사용할 수 있다.
1
2
3
4
5
6
7
namespace Ex {
export const a = "real";
}
const a = Ex; // {a: 'real'}
const b = Ex.a; // real
const c = Ex["a"]; // real
- 네임스페이스 이름이 겹치는 경우 병합된다. 내부에 같은 이름의 인터페이스가 있다면 합쳐지고, 내부에 같은 이름의 타입 별칭이 있다면 에러가 발생한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Example {
export interface Inner {
test: string;
}
export type test2 = number;
// Error!
// Duplicate identifier 'test2'.
}
namespace Example {
export interface Inner {
test1: string;
}
export type test2 = number;
// Error!
// Duplicate identifier 'test2'.
}
const ex: Example.Inner = {
test: "합쳐집니다",
test1: "합쳐졌어요"
};
This post is licensed under CC BY 4.0 by the author.