Problemas de tipo de retorno de genéricos datilografados

Dec 14 2020

Eu uso genéricos datilografados em meu projeto, mas parece que não funciona bem.

exemplo:

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

Acho que params 'a'digite exatamente como:

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

Mas na verdade:

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

Não sei porque, alguém pode me ajudar? Obrigado.

Respostas

Passersby Dec 14 2020 at 13:15

Uma vez que você não está definindo o tipo nesta linha: b: (p) => {}

Então, TS não pode inferir o tipo de P, embora você o retorne na definição acima para a.