Typescript-Generika geben Typprobleme zurück

Dec 14 2020

Ich verwende Typoskript-Generika in meinem Projekt, aber es scheint nicht gut zu funktionieren.

Beispiel:

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

Ich denke, params 'a'tippe einfach wie:

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

Aber in Wirklichkeit:

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

Ich weiß nicht warum, jemand kann mir helfen? Vielen Dank.

Antworten

Passersby Dec 14 2020 at 13:15

Da Sie den Typ in dieser Zeile nicht definieren: b: (p) => {}

Dann kann TS den Typ von P nicht ableiten, obwohl Sie ihn in der obigen Definition für zurückgeben a.