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