面试题答案
一键面试class Animal {
makeSound() {
return 'Generic animal sound';
}
}
class Dog extends Animal {
makeSound() {
return 'Woof!';
}
}
class Cat extends Animal {
makeSound() {
return 'Meow!';
}
}
function getDogSounds(animals: Animal[]): string[] {
return animals.filter((animal): animal is Dog => animal instanceof Dog)
.map(animal => animal.makeSound());
}
let animals: Animal[] = [new Dog(), new Cat()];
console.log(getDogSounds(animals));
上述代码解释如下:
- 定义了父类
Animal
,包含makeSound
方法。 - 定义了子类
Dog
和Cat
,都重写了makeSound
方法。 getDogSounds
函数通过filter
方法和类型保护animal instanceof Dog
筛选出animals
数组中的Dog
实例,然后使用map
方法获取这些Dog
实例发出的声音并返回。