我定义了两个接口。第一个有一个可选字段,第二个有一个索引签名:
interface A {
foo?: { bar: number };
}
interface B {
[s: string]: { bar: number };
}
为什么number | undefined
当我使用可选链接访问属性时,第一个接口给我一个 type 的结果,而第二个接口只给我 type number
?
const a: A = {};
const aa = a.foo?.bar;
// const aa: number | undefined
const b: B = {};
const bb = b.foo?.bar;
// const bb: number