我有以下代码
interface BaseA {
a: number;
}
interface SpecialA extends BaseA {
b: number;
}
type A = BaseA | SpecialA
const a = {
a: 5, b: 5
} as A
console.log(a.b)
我希望代码是有效的,但我得到了错误
Property 'b' does not exist on type 'A'.
Property 'b' does not exist on type 'BaseA'
A型似乎不是我想要定义的类型,我希望它与下面的类型等价
interface A {
a: number;
b?: number;
}
我的问题是
- 为什么我定义的类型A与我期望得到的类型A不同?
- 如果不手动定义,我如何定义预期的类型A?
注意:我需要像在某些地方一样使用SpecialA类型,所以不定义它,只定义预期的A不是一个选项.