Closed jinsupark4255 closed 1 month ago
일반 타입은 공변성을 띠고 있지만 제네릭 타입은 반공변성을 띠고 있다.
일반 타입 코드 예시
interface User {
id: string;
}
interface Member extends User { nickName: string; }
let users: Array
users = members; // 정상 작동 members = uses; // 에러
- 제네릭 타입 코드 예시
```tsx
type PrintUserInfo<U extends User> = (user: U) => void;
let printUser: PrintUserInfo<User> = (user) => console.log(user.id);
let printMember: PrintUserInfo<Member> = (user) => console.log(user.id, user.nickName);
printMember = printUser; // 정상 작동
printUser = printMember; // 에러
📝 p.279 - p.280
🧐 공변성과 반공변성의 의미를 설명해주시고, 일반 타입과 제네릭 타입이 가지고 있는 차이를 '공변성, 반공변성'을 활용하여 설명해주세요.