Jenis naskah generik mengembalikan masalah jenis

Dec 14 2020

Saya menggunakan naskah generik dalam proyek saya tetapi tampaknya tidak berfungsi dengan baik.

contoh:

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

Saya pikir params 'a'tipe seperti:

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

Tapi sebenarnya:

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

Saya tidak tahu mengapa, seseorang dapat membantu saya? Terima kasih.

Jawaban

Passersby Dec 14 2020 at 13:15

Karena Anda tidak menentukan tipe di baris ini: b: (p) => {}

Kemudian TS tidak dapat menyimpulkan jenis P, meskipun Anda mengembalikannya dalam definisi untuk di atas a.