相关疑难解决方法(0)

推断 TypeScript 中类型保护的联合类型

TypeScript 似乎在推断类型保护的联合类型方面存在问题。例如,考虑一个将类型保护数组与以下签名组合的函数

function combine<T>(guards: ((x: any) => x is T)[]): (x: any) => x is T
Run Code Online (Sandbox Code Playgroud)

并考虑以下类型护板带AB具有不同特性的

function isA(x: any): x is A
function isB(x: any): x is B
Run Code Online (Sandbox Code Playgroud)

现在我希望combine([isA, isB])能够工作并拥有推断的类型,(x: any) => x is A | B但我收到一个错误,指出类型的参数((x: any) => x is A | (x: any) => x is B)[]不可分配给类型的参数(x: any) => x is A,这意味着T推断为A而不是A | B.

T明确指定时,即combine<A|B>([isA, isB]) …

typescript

4
推荐指数
1
解决办法
568
查看次数

标签 统计

typescript ×1