13 Typescript 유틸리티: 개발자를 위한 치트 시트
24784 단어 typescriptjavascriptfrontendwebdev
예를 들어 2가지 응답 유형이 있습니다.
사용자 프로필 응답
interface UserProfileResponse {
id: number;
name: string;
email: string;
phone: string;
avatar: string;
}
로그인 응답
interface LoginResponse {
id: number;
name: string;
}
동일한 컨텍스트 LoginResponse 및 UserProfileResponse의 유형을 정의하는 대신 UserProfileResponse의 유형을 정의하고 LoginResponse의 일부 속성을 선택할 수 있습니다.
type LoginResponse = Pick<UserProfileResponse, "id" | "name">;
더 나은 코드를 작성하는 데 도움이 되는 몇 가지 유틸리티 함수를 이해해 봅시다.
대문자
Type의 모든 속성이 대문자로 설정된 형식을 구성합니다.
type Role = "admin" | "user" | "guest";
// Bad practice 💩
type UppercaseRole = "ADMIN" | "USER" | "GUEST";
// Good practice ✅
type UppercaseRole = Uppercase<Role>; // "ADMIN" | "USER" | "GUEST"
소문자
Type의 모든 속성이 소문자로 설정된 형식을 생성합니다. 대문자의 반대.
type Role = "ADMIN" | "USER" | "GUEST";
// Bad practice 💩
type LowercaseRole = "admin" | "user" | "guest";
// Good practice ✅
type LowercaseRole = Lowercase<Role>; // "admin" | "user" | "guest"
대문자로
Type의 모든 속성이 대문자로 설정된 형식을 구성합니다.
type Role = "admin" | "user" | "guest";
// Bad practice 💩
type CapitalizeRole = "Admin" | "User" | "Guest";
// Good practice ✅
type CapitalizeRole = Capitalize<Role>; // "Admin" | "User" | "Guest"
대문자 없애기
Type의 모든 속성이 대문자로 설정되지 않은 형식을 구성합니다. 자본화의 반대.
type Role = "Admin" | "User" | "Guest";
// Bad practice 💩
type UncapitalizeRole = "admin" | "user" | "guest";
// Good practice ✅
type UncapitalizeRole = Uncapitalize<Role>; // "admin" | "user" | "guest"
부분적
Type의 모든 속성이 optional로 설정된 형식을 구성합니다.
interface User {
name: string;
age: number;
password: string;
}
// Bad practice 💩
interface PartialUser {
name?: string;
age?: number;
password?: string;
}
// Good practice ✅
type PartialUser = Partial<User>;
필수의
필수로 설정된 Type의 모든 속성으로 구성된 형식을 구성합니다. 부분 반대.
interface User {
name?: string;
age?: number;
password?: string;
}
// Bad practice 💩
interface RequiredUser {
name: string;
age: number;
password: string;
}
// Good practice ✅
type RequiredUser = Required<User>;
읽기 전용
읽기 전용으로 설정된 Type의 모든 속성으로 구성된 형식을 구성합니다.
interface User {
role: string;
}
// Bad practice 💩
const user: User = { role: "ADMIN" };
user.role = "USER";
// Good practice ✅
type ReadonlyUser = Readonly<User>;
const user: ReadonlyUser = { role: "ADMIN" };
user.role = "USER"; // Error: Cannot assign to 'role' because it is a read-only property.
기록
유형 T의 속성 K 집합으로 유형을 구성합니다. 각 속성 K는 유형 T에 매핑됩니다.
interface Address {
street: string;
pin: number;
}
interface Addresses {
home: Address;
office: Address;
}
// Alternative ✅
type AddressesRecord = Record<"home" | "office", Address>;
선택하다
키가 유니온 유형 키에 있는 Type의 속성만 선택합니다.
interface User {
name: string;
age: number;
password: string;
}
// Bad practice 💩
interface UserPartial {
name: string;
age: number;
}
// Good practice ✅
type UserPartial = Pick<User, "name" | "age">;
생략
키가 유니온 유형 키에 있는 Type의 속성만 생략합니다.
interface User {
name: string;
age: number;
password: string;
}
// Bad practice 💩
interface UserPartial {
name: string;
age: number;
}
// Good practice ✅
type UserPartial = Omit<User, "password">;
들어오지 못하게 하다
키가 공용체 유형인 Excluded에 있는 속성을 제외하고 Type의 모든 속성으로 유형을 생성합니다.
type Role = "ADMIN" | "USER" | "GUEST";
// Bad practice 💩
type NonAdminRole = "USER" | "GUEST";
// Good practice ✅
type NonAdmin = Exclude<Role, "ADMIN">; // "USER" | "GUEST"
발췌
키가 통합 형식 Extract에 있는 Type의 모든 속성을 사용하여 형식을 구성합니다.
type Role = "ADMIN" | "USER" | "GUEST";
// Bad practice 💩
type AdminRole = "ADMIN";
// Good practice ✅
type Admin = Extract<Role, "ADMIN">; // "ADMIN"
Null 불가
null을 허용하지 않는 것으로 설정된 Type의 모든 속성을 사용하여 형식을 구성합니다.
type Role = "ADMIN" | "USER" | null;
// Bad practice 💩
type NonNullableRole = "ADMIN" | "USER";
// Good practice ✅
type NonNullableRole = NonNullable<Role>; // "ADMIN" | "USER"
당신이하지 않은 경우 읽어야합니다
자세한 내용은 .
Github , , , Medium , Stackblitz에서 나를 잡아라.
Reference
이 문제에 관하여(13 Typescript 유틸리티: 개발자를 위한 치트 시트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devsmitra/13-typescript-utility-a-cheat-sheet-for-developer-ab3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)