typescript - 如何对子类型进行类型保护?
问题描述
在下面的例子中,我相信我用mainType
正确地保护了'b' in mainType.a
,但似乎并非如此。
type MainType<Sub extends SubType> = { a: Sub, b: string }
type SubType = Sub1 | Sub2
type Sub1 = { a: string }
type Sub2 = { a: string, b: string }
function handle<Sub extends SubType>(mainType: MainType<Sub>) {
if ('b' in mainType.a) {
handle1(mainType);
}
}
function handle1(a: MainType<Sub2>) {
}
如何handle1
在没有类型断言的情况下接受类型?