=> 배열 안의 요소들 타입이 변경이 될 수 있음
=> 이럴때 Union type을 추가하면 되긴 함
=> 그런데, 추가될 때마다 Union type을 추가하면 너무너무 안예쁨
=> 타입 매개변수 라고도 함
=> T, A 뭐 상관은 없는데 일반적으로 Type의 T
=> 명시적으로 타입을 안써줘도 ts가 알아서 알아채긴 함.
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);
=> 지금 이 부분만 보고 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으로 특정함