[ts] Generic

Lee Tae-Sung·2022년 12월 24일
0

ts

목록 보기
5/7

=> 배열 안의 요소들 타입이 변경이 될 수 있음
=> 이럴때 Union type을 추가하면 되긴 함
=> 그런데, 추가될 때마다 Union type을 추가하면 너무너무 안예쁨

Generic

=> 타입 매개변수 라고도 함
=> T, A 뭐 상관은 없는데 일반적으로 Type의 T

=> 명시적으로 타입을 안써줘도 ts가 알아서 알아채긴 함.

2. interface에서 활용하기

interface Mobile<T> {
    name: string;
    price: number;
    option: T;
}

const m1: Mobile<object> = {
    name: 's21',
    price: 1000,
    option: {
        color: "red",
        coupon: false,
    }
}

console.log(m1);

const m2: Mobile<string> = {
    name: 's21',
    price: 1000,
    option: 'Noting'
}

console.log(m2);

3.

=> 지금 이 부분만 보고 name이 있다고 장담할 수 없다.
=> 그치 .. 내가 조금 헷갈렸던건 interface가 뭔가 object 처럼 받아들여서 그럼
=> interface는 ts가 이해하기 좋게 알려주는 것일 뿐.

=> 제네릭을 사용해 T를 활용한 지금 코드만으로 data object에 name 속성이 있다고 장담할 수 없음

=> 이건 좀 아직 온전히 이해가 안됨. => 추후 고민

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

interface Car {
    name: string;
    color: string;
}

const user: User = { name: "a", age: 10}

function showName<T extends { name: string }>(data: T): string {
    return data.name;
}

console.log(showName(user));

=> 아무튼 다음과 같이 확장해서 name을 string으로 특정함

profile
긍정적인 에너지를 가진 개발자, 이태성입니다.

0개의 댓글