Problèmes de type de retour des génériques Typescript

Dec 14 2020

J'utilise des génériques dactylographiés dans mon projet mais cela ne semble pas bien fonctionner.

exemple:

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) => {},
})

Je pense que params 'a'tapez juste comme:

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

Mais en fait:

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

Je ne sais pas pourquoi, quelqu'un peut m'aider? Merci.

Réponses

Passersby Dec 14 2020 at 13:15

Puisque vous ne définissez pas le type sur cette ligne: b: (p) => {}

Ensuite, TS ne peut pas déduire le type de P, même si vous le renvoyez dans la définition ci-dessus pour a.