MST

星途 面试题库

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

在TypeScript中,当我们有两个接口`interface A { a: number; }`和`interface B { a: number; b: string; }`,请问类型`A`和`B`是否兼容?如果`let a: A; let b: B; a = b;`这样的赋值是否可行?为什么?
49.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
  1. 类型兼容性分析
    • 在TypeScript中,类型兼容性是基于结构子类型的。
    • 对于接口A { a: number; }interface B { a: number; b: string; },如果一个类型T能赋值给另一个类型S,那么T必须至少包含S中的所有属性,且这些属性的类型要兼容。
    • 这里类型B包含了类型A的所有属性(a属性且类型都是number),并且还有额外的b属性。
  2. 赋值可行性分析
    • let a: A; let b: B; a = b;这样的赋值是可行的。
    • 原因是B类型的对象包含了A类型所要求的所有属性(a属性),满足结构子类型的要求。从赋值角度看,b对象具有a所期望的a属性,所以可以将b赋值给a

总结:类型AB是兼容的,a = b;这样的赋值是可行的,因为B类型的对象满足A类型的结构要求。