Typescript 제네릭 반환 유형 문제

Dec 14 2020

내 프로젝트에서 typescript 제네릭을 사용하지만 제대로 작동하지 않는 것 같습니다.

예:

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.