타입 관계를 나타내는 연산자입니다.
다음은 T
타입이 Base
타입의 모든 프로퍼티를 포함하는지 확인합니다.
T extends Base
Bird
는 Animal
의 구조를 만족하고, 모든 속성을 포함하며, 추가 속성을 가집니다.
interface Animal {
name: string
age: number
}
interface Bird extends Animal {
fly: () => void
}
제네릭은 Animal
타입으로 제한됩니다.
function getName<T extends Animal>(entity: T) {
return entity.name
}
삼항연산자를 사용하여 타입을 검사할 수도 있습니다.
제네릭이 Animal
타입이라면 IsAnimal
타입은 YES
가 되고, 그게 아니라면 false
가 됩니다.
interface Animal {
name: string
age: number
}
type IsAnimal<T> = T extends Animal ? "YES" : false
const animal = {
name: "Jun",
age: 80
}
type Answer = IsAnimal<typeof animal> // "YES"