Các vấn đề về loại trả về chỉ số chung typecript

Dec 14 2020

Tôi sử dụng generics typecript trong dự án của mình nhưng nó có vẻ không hoạt động tốt.

thí dụ:

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

Tôi nghĩ params 'a'nhập giống như:

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

Nhưng trên thực tế:

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

Tôi không biết tại sao, ai đó có thể giúp tôi? Cảm ơn.

Trả lời

Passersby Dec 14 2020 at 13:15

Vì bạn không xác định loại trên dòng này: b: (p) => {}

Khi đó TS không thể suy ra loại P, mặc dù bạn trả lại nó trong định nghĩa trên cho a.