带keyof泛型返回值的TypeScript泛型函数类型断言问题
问题:TypeScript泛型函数中无法移除类型断言的困扰
type Base = { id: string } type Foo = Base & { foo: string } const isFoo = (obj: any): obj is Foo => { return 'foo' in obj } const getSomeKeyOfGeneric = <M extends Base>(obj: M): (keyof M)[] => { if (isFoo(obj)) { return (['id', 'foo'] as (keyof Foo)[]) as (keyof M)[] } return [] }
我没办法移除代码里的as类型断言,否则会遇到以下问题:
- 移除第一个断言后会丢失所有类型检查,只能用
string[]作为返回类型 - 移除第二个断言会直接触发TypeScript错误
内容的提问来源于stack exchange,提问作者Shaegi
相关产品推荐
相关产品推荐

