interface vs type

꾸준히·2025년 4월 24일

TypeScript

목록 보기
10/17

어느 상황에 사용?

interface는 구조 중심(객체 지향) 설계에, => 클래스나 오브젝트를 정할 때
type은 유연하고 복잡한 타입 조합에 적합 => 그 외의 경우에

interface와 type의 차이

1. 원시 타입(Primitive Types)

number, string, boolean, null, undefined 타입

<type을 사용하는 경우>

type name = string;

<interface를 사용하는 경우>
interface에서는 직접적 사용이 불가능.
왜냐면, interface는 객체 유형만 사용 가능

2. 유니온 타입(Union types)

여러 타입 중 하나의 타입을 가지는 타입으로 |을 사용

<type을 사용하는 경우>

type Team = "red" | "pink" | "yellow";
type union = number | string;

<interface를 사용하는 경우>
interface에서는 직접적 사용이 불가능.
하지만, 두 개 이상의 인터페이스를 결합해서 새로운 유니온 생성은 가능

interface Team {
	color: string;
}

interface Health {
	weight: number;
}

type = Team | Heath;

3. 함수 타입

typeinterface는 모두 함수 타입을 사용할 수 있음.
interface: 사용 / type=>을 사용

<type을 사용하는 경우>

type myFunc = (arg1: number, arg2: number) => number;

<interface를 사용하는 경우>

interface myFunc {
		(arg1: number, arg2: number): number;
}

4. 선언 병합

<type을 사용하는 경우>
지원 안함

<interface를 사용하는 경우>

interface Person {
	name: string;
}

interface Person {
	age: number;
}

interface는 자동으로 병합해준다.

5. 확장

<type을 사용하는 경우>

type User = {
	name: string;
}

type Player = User & {
	age: number;
}

const Human: Player = {
	name: 'k',
    age: 10
}

console.log(Human); // { "name":"k", "age": 10}

<interface를 사용하는 경우>

interface User {
	name: string;
}

interface Player extends User {
	age: number;
}

const Human: Player = {
	name: 'k',
    age: 10
}

console.log(Human); // {  "name": "k", "age": 10}

0개의 댓글