1. 공통점
- 객체 타입을 정의하는 키워드
- 정적으로 모양을 알 수 있는 객체 타입만 정의
- Interface에 대한 extends와 Class에 대한 implements 키워드를 사용하여 관계 정의 가능
type TypeCase = {
n : number;
}
interface InterfaceCase {
n2 : number;
}
interface Test1 extends TypeCase{};
interface Test2 extends InterfaceCase{};
class TestClass1 implements TypeCase{ ... }
class TestClass2 implements InterfaceCase{ ... }
2. 차이점
- Type은 선언 병합이 불가능, Interface는 선언 병합이 가능 → 선언적 확장 가능
(선언 병합 : 동일한 이름으로 여러번 선언해도 컴파일 시점에 합쳐진다.)
interface Test{
n1 : number;
}
interface Test{
n2 : number;
}
- 확장 방법 ( &와 extends )
type TestType = TypeCase & {n3 : number;}
interface TestInterface extends typeInterface{
n3 : number;
}
- Computed Value는 Type만 사용가능
type TypeModel = "name" | "address";
type TypeData = {
[model in TypeModel] : string;
}
const test : TypeData = {
name : "홍길동"
, address : "대한민국"
}
- Interface는 객체에만 사용가능
interface InterfaceCase{
name : string
}
type TypeCase1 = {
name : string
}
type TypeCase2 = string;
//interface InterfaceError extends string {} : 불가능하다.
반응형
'Client Side > - Type Script' 카테고리의 다른 글
Tip (0) | 2024.07.18 |
---|---|
Enum, Union Type, Tree Shaking (0) | 2023.10.30 |
Calendar (0) | 2023.10.27 |