面试题答案
一键面试type MyType<T, U> = T extends U? T : never;
function myFunction<T, U>(arg: MyType<T, U>): MyType<T, U> {
return arg;
}
// 测试
class Animal {}
class Dog extends Animal {}
class Cat {}
// T是U的子类型
const dog: MyType<Dog, Animal> = new Dog();
const result1 = myFunction(dog); // result1类型为Dog
// T不是U的子类型
// const cat: MyType<Cat, Animal> = new Cat(); // 报错,因为Cat不是Animal的子类型
// const result2 = myFunction(cat);