Type
- 여러 형식의 타입을 지정해 줄 수 있다.
// 타입 1개만 지정
type A = string;
// 타입 여러개 지정
type B = string | number;
// 객체형식
type C = {
x:number;
y:string;
}
// 사용
const alphabet = (a:A, b:B, c:C) => {
console.log(a, b, c)
}
Interface
- 객체 형태의 타입을 지정해준다.
interface Hello {
good:string;
bad:string;
}
const hi = (hello:Hello) => {
console.log(hello.good);
console.log(hello.bad);
}
hi({good:"good to see you", bad:"wtf"});
interface가 가지는 기능의 대부분은 type이 사용할 수 있다. 다만 확장의 경우, type은 생성한 뒤 변화할 수 없지만 인터페이스는 생성 후에 변경할 수 있다.
interface Hello {
good:string
}
interface Hello {
bad:number
}
// 이 시점에서 Hello라는 인터페이스는 good와 bad에 대한 타입을 모두 가지고 있다.
type Hello = {
good: string
}
// type은 이 시점 이후로 변경할 수 없다.
대신 둘 모두 새로운 명칭의 interface와 type을 생성하여 다른 interface나 type을 가져오는 방식 = 확장을 할 수 있다.
interface의 확장
interface Fruit {
name : string
}
interface Apple extends Fruit{
apple : number
}
// Apple은 name, apple 의 타입을 가지게 된다.
type의 확장
type Fruit = {
name: string
}
type Apple = Fruit & {
apple : number
}
// Apple은 name, apple 의 타입을 가지게 된다.
공식문서에서는 우선 interface를 사용하고 문제가 있을 시 type을 사용하기를 바란다고 적혀있다.
객체타입으로 표현이 가능하다면 interface를 사용하고 그 외에는 type을 쓰는게 좋을듯?
'이것저것 코딩공부 > 기타' 카테고리의 다른 글
Vite 사용시 모바일에서 localhost 접근하기 (0) | 2023.01.25 |
---|---|
element.scrollIntoView (1) | 2022.08.25 |
Quasar 사용시 브라우저에 아무것도 뜨지 않는 문제 (2) | 2022.05.17 |