typescript generics ส่งคืนปัญหาประเภท

Dec 14 2020

ฉันใช้ typescript generics ในโครงการของฉัน แต่ดูเหมือนว่าจะไม่ได้ผล

ตัวอย่าง:

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

ฉันคิดว่าparams 'a'พิมพ์เหมือนกับ:

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

แต่จริงๆแล้ว:

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

ฉันไม่รู้ว่าทำไมใครบางคนสามารถช่วยฉันได้? ขอบคุณ.

คำตอบ

Passersby Dec 14 2020 at 13:15

เนื่องจากคุณไม่ได้กำหนดประเภทในบรรทัดนี้: b: (p) => {}

จากนั้น TS ไม่สามารถอนุมานประเภทของ P ได้แม้ว่าคุณจะส่งคืนในคำจำกัดความข้างต้นสำหรับa.