为什么Typescript编译器不会推断出这个过滤器类型保护?

时间:2017-05-08 16:29:32

标签: typescript type-inference

我正在尝试从数组中过滤掉未定义的值,但无法使编译器正确推断结果类型。我知道我可以使用类型断言,但更愿意理解如何正确键入我的回调以实现此结果。

const isDefinedNum = (x: number | undefined, _i: number, _a: ReadonlyArray<number | undefined>): x is number => x !== undefined;
const a: (number | undefined)[] = [1, undefined, 2, undefined];
const b = a.filter(isDefinedNum);

在上文中,b的类型为(number | undefined)[]。我正在尝试让编译器使用lib.d.ts中的以下类型来统一调用:

filter<S extends T>(callbackfn: (this: void, value: T, index: number, array: ReadonlyArray<T>) => value is S): S[];

0 个答案:

没有答案