inferencija tipa - Zašto Typescript kompajler ne inferira ovaj filter typeguard?
Pokušavam filtrirati nedodijeljene vrijednosti iz niza, ali ne mogu natjerati kompajler da ispravno zaključi tip rezultata. Znam da bih mogao jednostavno koristiti tvrdnju tipa, ali bih radije shvatio kako ispravno tipizirati moj povratni poziv kako bih postigao ovaj rezultat.
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);
U gore navedenom, b je tipa (number | undefined)[]. Pokušavam natjerati kompajler da ujedini poziv s sljedećim tipom iz lib.d.ts:
filter<S extends T>(callbackfn: (this: void, value: T, index: number, array: ReadonlyArray<T>) => value is S): S[];