728x90
차이점
- interface는 선언적 확장이 가능하다.
- interface는 객체 타입을 만들기 위한 것이다. 객체 타입만 만들 수 있다.
- interfacesms computed type을 만들 수 없다.
interface는 '선언적 확장'이 가능하다는 점.
선언적 확장이라고 하면, interface를 같은 이름으로 선언이 가능하다는 것이다. type은 같은 이름으로 type 선언이 불가능함.
- 확장 방법의 차이
interface는 클래스처럼 다룰 수 있다. 다른 interface에 extends할 수 있다.
interface Human { id: number, name: string }
interface Student extends human { school: string }
type은 다음처럼 확장할 수 있다.
type human = {
age: number,
name: string
}
type student = human & { school: string };
interface는 객체에만 사용이 가능하다. 객체 타입을 만들기 위한 것이다.
interface는 computed value의 사용이 불가능하다.
type name = 'firstName' | 'lastName'
type NameTypes = {
[key in name]: string
}
const yc: NameTypes = {firstName: 'hi', lastName: 'yc'}
interface NameInterface {
// error❌
[key in name]: string
}
728x90
'Typescript' 카테고리의 다른 글
[Typescript] <T>가 뭐니? (0) | 2022.11.06 |
---|---|
[Typescript] 타입가드란? 사용법 (0) | 2022.11.06 |
[Typescript] Omit? Partial? Pick? (0) | 2022.10.11 |
Typescript + React 컴포넌트 간에 props 데이터 전달 중 발생한 문제 (0) | 2021.07.11 |
댓글