Typescript typy generyczne zwracają problemy

Dec 14 2020

W moim projekcie używam typów maszynopisu, ale wydaje się, że nie działa dobrze.

przykład:

interface Test<T, P> {
  a?: (v: T) => P
  b?: (v: P) => void
}

const fn1 = <T, P>(_config: Test<T, P>) => {}

fn1({
  a: (p) => 1,
  b: (p) => {},
})

Myślę, że piszę params 'a'jak:

Test<unknown, number>.a?: ((v: unknown) => number) | undefined

Ale tak na prawdę:

Test<unknown, unknown>.a?: ((v: unknown) => unknown) | undefined

Nie wiem dlaczego, ktoś może mi pomóc? Dzięki.

Odpowiedzi

Passersby Dec 14 2020 at 13:15

Ponieważ nie definiujesz typu w tej linii: b: (p) => {}

Wtedy TS nie może wywnioskować typu P, mimo że zwracasz go w powyższej definicji for a.