-
실무에서 쓰는 유용한 타입스크립트 5가지카테고리 없음 2023. 5. 10. 16:12
Without falsy
배열을 인수로 받아, null, undefined, false와 같은 Falsy 값이 제외된 배열을 반환합니다
function withoutFalsy<T>(arr: T[]) { return arr.filter( (value): value is Exclude<typeof value, null | undefined | false> => !(value === null || value === undefined || value === false) ); } const items = [1, null, undefined, 3, 0]; // (number | null | undefined)[]; const numbers = withoutFalsy(items); // number[];
Merge type
두 개의 타입을 병합하여 새로운 타입을 생성합니다.
type Merge<F, S> = { [P in keyof F | keyof S]: P extends keyof S ? S[P] : P extends keyof F ? F[P] : never; }; type User = { name: string; }; type Content = { subject: string; }; type Profile = Merge<User, Content>; // { name: string; subject: string; }
View type
교차 타입의 모든 속성을 확인 할 수 있습니다.
type View<T> = {[P in keyof T]: T[P]}; type A = { title: string; } type B = { content: string; } type C = A & B; // A & B type D = View<A & B> // { title: string; content: string }
Args
React에서 사용 할수 있는 유틸리티 타입 함수 입니다.
User 컴포넌트에서 onChange 속성의 파라미터 타입을 추출하고, change 함수의 파라미터로 사용하는 예제를 보여줍니다.type Props<T extends (...args: any) => any> = Parameters<T>[0]; type PickByType<T, U> = { [P in keyof T as T[P] extends U ? P : never]: T[P] }; type Args< T extends (...args: any) => any, U extends keyof PickByType<Props<T>, Function>, > = Parameters<Props<T>[U]>; type UserProp = { name: string; onChange: (value: string) => void; }; function User({ onChange }: UserProp) { return {}; } function change([value]: Args<typeof User, 'onChange'>) { // value: string }
Get property
TypeScript에서 자주 사용되는 유틸리티 함수 중 하나 입니다.
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } const user = { name: "bob", email: "uznam8x@gmail.com" }; const a = getProperty(user, 'name'); // string