[TS] Interface (vs type)

zhflsdl보보·2022년 12월 20일
0

TypeScript

목록 보기
2/3

타입을 정의하는데에는 typeinterface 두가지 방법이 있다.

📌 Type

type userInfo = {
	name: string;
    age: number;
};

상속받을 때: & 연산자 표기

type Developer = userInfo & {
	skill: string[];
}

type barista = Person['job'];

📌 Interface

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

function getInfo (user: userInfo) {
	console.log(user.name);
}

const user1 = {
	name: "kimboyoon",
    age: 26
};

getInfo(user1); // "kimboyoon"

1. 동일한 이름으로 재선언 가능

interface userInfo {
	name: string;
}

interface userInfo {
	age: number;
}

interface userInfo {
	language: string;
}

const user1: userInfo = {
	name: "kimboyoon",
    age: 26,
    language: "korean",
}

이를 선언병합 (Declaration Merging) 이라고 한다. (두개 이상의 개별적인 선언을 하나의 정의로 병합)

2. 상속받을때: extends 사용하여 확장된 타입 선언 가능

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

interface Developer extends Person {
	language: string;
}

const captain: Developer = {
  	name: "캡틴",
  	age: 26
  	language: "korean"
}

3. 정의한 속성 전부를 사용하지 않아도 가능

옵셔널 속성이라고 하며, ? 를 이용한다.

interface userInfo {
	name: string;
    age?: number;
}

const user1 = {
	name: "kimboyoon"
} // age 없어도 가능
profile
매일매일 성장하는 개발자

0개의 댓글