본문 바로가기
TypeScript

TypeScript - 인터페이스(interface),타입 앨리어스(type alias)

by J-non 2024. 5. 7.

<목차>

1. interface
2. type alias

 


1. interface

interface는 객체의 구조를 정의하는 타입이다.

객체에 포함될 키와 키에 해당하는 값의 타입만을 지정해 놓는다.

보편적으로 interface의 이름의 첫 글자에 I를 넣어 작성해 object와의 혼동을 방지한다.

[예약어] [이름] {
	[key]: [타입]
}

// interface의 키값에 ?를 주면 해당 키가 있어도 되고 없어도 된다.
interface IPerson {
    name: string,
    age?: number
}

 

extends를 사용해 interface 간 상속이 가능하다.

interface IPerson {
  name: string;
  age: number;
}

interface IStudent extends IPerson { // 확장(상속)
  school: string;
}

const Student: IStudent = {
    name: "누구",
    age: 20,
    school: "어디학교"
}

 

 

타입 앨리어스와 다르게 선언적 확장이 가능하다.

interface IPerson {
    name: string
}

interface IPerson {
    age: 20
}

 

위와 같은 코드가 있을 때 interface의 경우 아래에 위치한 interface로 정의되지 않고 같은 이름의 interface와 병합되어

아래와 같이 병합된다.

interface IPerson {
    name: string,
    age: 20
}

 

 


2. type alias

type alias는 type 키워드를 사용해서 타입에 이름을 설정하는 방법이다.

type alias는 모든 타입에 적용이 가능하다. 그러나, string, number와 같은 원시 타입에 별칭을 정의하는 것은 권유되지 않으며, 유니온 타입과 같이 타입이 여러 가지여서 코드가 길어지는 경우에 주로 사용된다.

[예약어] [별칭] = [타입];

type TAge = number;

// | 연산자로 타입을 여러개 지정할 수 있다. 유니온 타입
type TUnion = number | string;

 

type alias는 모든 타입에 적용이 가능하나 interface와 다르게 선언적 확장이 불가능해 객체 구조를 정의할 때 사용이 권장되지 않는다.

객체 구조를 정의할 때는 확장성이 좋지 않아 interface를 사용하는 것을 typescript에서 권장하고 있다.

 

 

'TypeScript' 카테고리의 다른 글

TypeScript - 타입 어설션(type assertions), 제네릭(generics)  (0) 2024.05.08
TypeScript - 기초 문법  (0) 2024.04.30
TypeScript - 환경세팅  (0) 2024.04.29