MST

星途 面试题库

面试题:TypeScript类型兼容性之基础应用

在TypeScript中,假设有两个接口`Animal`和`Dog`,`Dog`继承自`Animal`。`Animal`有属性`name: string`,`Dog`新增属性`bark: () => void`。请解释为什么一个类型为`Dog`的变量可以赋值给类型为`Animal`的变量,同时写出对应的代码示例。
25.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

在TypeScript中,一个类型为Dog的变量可以赋值给类型为Animal的变量,这是因为Dog继承自Animal,它拥有Animal的所有属性,满足Animal类型的要求,符合里氏替换原则。也就是说,在任何需要Animal类型的地方,都可以使用Dog类型,因为DogAnimal的一种更具体的类型。

以下是代码示例:

// 定义Animal接口
interface Animal {
    name: string;
}

// 定义Dog接口,继承自Animal
interface Dog extends Animal {
    bark: () => void;
}

// 创建一个Dog类型的变量
let myDog: Dog = {
    name: 'Buddy',
    bark: () => {
        console.log('Woof!');
    }
};

// 将Dog类型的变量赋值给Animal类型的变量
let myAnimal: Animal = myDog;
console.log(myAnimal.name);