首页 > 解决方案 > 如何对子类型进行类型保护?

问题描述

在下面的例子中,我相信我用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在没有类型断言的情况下接受类型?

这里是游乐场

标签: typescripttypes

解决方案


推荐阅读