지난 연습과 유사하게 TypeScript의 유틸리티 타입 중 하나를 사용하여 함수에서 타입을 가져올 것입니다.
이번에는 이 makeQuery
함수에서 매개변수를 추출하려고 합니다.
const makeQuery = (
url: string,
opts?: {
method?: string;
headers?: {
[key: string]: string;
};
body?: string;
},
) => {};
type MakeQueryParameters = unknown;
테스트에 따르면 MakeQueryParameters
는 첫 번째 값이 url: string
이고 두 번째 값이 옵셔널 opts
객체인 튜플을 반환해야 한다는 것을 알 수 있습니다.
type tests = [
Expect<
Equal<
MakeQueryParameters,
[
url: string,
opts?: {
method?: string
headers?: {
[key: string]: string
}
body?: string
}
]
>
>
]
함수 매개변수의 타입을 가져오려면 typeof
와 다른 유틸리티 타입이 필요합니다.
타입스크립트 문서에서 유틸리티 타입 중 도움이 되는 것이 있는지 살펴보세요.
import { Equal, Expect } from '../helpers/type-utils';
const makeQuery = (
url: string,
opts?: {
method?: string;
headers?: {
[key: string]: string;
};
body?: string;
}
) => {};
type MakeQueryParameters = Parameters<typeof makeQuery>;
type tests = [
Expect<
Equal<
MakeQueryParameters,
[
url: string,
opts?: {
method?: string;
headers?: {
[key: string]: string;
};
body?: string;
}
]
>
>
];
Parameters
직접 구현해봄
type MyParameters<T> = T extends (...args: infer P) => any ? P : never;