그냥 한번 정리하고 싶어서 쓰는 정리 글
interface
와 type
interface
interface
선언 시 자동으로 합쳐짐 = 코드의 다른 위치에서 타입 확장 가능! (= 확장성 필요할 때 굿)Union
타입 사용 불가.interface Item { const item : Item = {
id : number; id : 1,
name : string; name : 'itemBox',
info : string; info : 'item box info'
} }
// 특정 구조를 따르도록 강제하려면 interface가 적합함.
interface Person {
name: string;
sayHello: void;
}
class User implements Person {
// implements
// - TypeScript에서 클래스가 특정 interface의 구조를 따라야 할 때 사용
// - 사용하면 클래스가 interface에서 정의된 속성과 메서드를 반드시 구현하도록 강제할 수 있음
// => 코드의 일관성을 유지하고 예측 가능한 구조를 제공함.
// => 이것을 사용해서 클래스가 이 구조를 반드시 따르도록 함.
// = 클래스는 interface에서 정의된 모든 속성과 메서드를 포함해야 함.
constructor(public name: string) {}
sayHello() {
console.log(`Hello, my name is ${this.name}`);
}
}
type
Union
과 Intersection
을 지원// 함수 타입 정의 시 type이 더 간결하고 이해하기 쉬워서 적합함.
type Statue = 'error' | 'success' | 'loading';
const onChangeStatus = (status : Status)=>{
if(status === 'error'){
console.error('erorr', status)
....
}
// 여러 타입 조합해서 새 타입 만들 때 = type의 &(Intersection)연산자가 유용함.
type User = { id: number, name : string; }
type Admin = User & {role : 'admin';};
const admin: Admin = {
id: 1,
name : 'PYE',
role : 'admin',
}