Type & Interface

배고픈 징징이 ㅣ 2023. 2. 1. 15:25

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