더북(TheBook)

(...args: any) => any는 임의의 함수를 타이핑하는 부분이고, abstract new (...args: any) => any는 임의의 생성자를 타이핑하는 방법입니다. 이 둘에서 추론하길 원하는 매개변수와 반환값 부분을 infer로 바꾸면 됩니다.

타입 PCP[a: string, b: number]로 표시되는데 이는 튜플의 각 자리에 이름을 붙인 것입니다. 이름을 제외하면 [string, number]와 동일합니다.

Note ≣ | 타입 이름에서 My를 제거하면 에러가 발생해요.

앞에서 만들었던 타입의 이름에서 My를 빼면 에러가 발생합니다.

type Parameters<T> = T extends (...args: infer P) => any ? P : never;
// Duplicate identifier 'Parameters'. lib.es5.d.ts(1617, 6): 'Parameters' was also declared here.

Parameters라는 이름이 중복되었다고 뜨는데, 타입스크립트가 이를 미리 만들어두었기 때문입니다. 타입스크립트는 자주 사용하는 타입을 미리 선언해두었습니다. 그 파일이 lib.es5.d.ts 같은 파일입니다. 이 파일은 다음 장에서 분석해봅니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.