Partial<t></t>
interface User {
name: string;
age: number;
}
type PartialUser = Partial<User>;
// PartialUser = { name?: string; age?: number; }- ๊ฐ์ฒด์ ์ผ๋ถ ์์ฑ๋ง ์ ๋ฐ์ดํธํ๊ฑฐ๋ ๋ถ๋ถ์ ์ผ๋ก ์ฌ์ฉํ ๋ ์ ์ฉ.
Required<t></t>
interface User {
name?: string;
age?: number;
}
type RequiredUser = Required<User>;
// RequiredUser = { name: string; age: number; }- ํ์ T์ ๋ชจ๋ ์์ฑ์ ํ์(required)๋ก ๋ง๋ญ๋๋ค. ์ ํ์ ์์ฑ์ ๊ฐ์ ๋ก ํ์๋ก ๋ง๋ค ๋ ์ฌ์ฉ.
Readonly<t></t>
interface User {
name: string;
age: number;
}
type ReadonlyUser = Readonly<User>;
// ReadonlyUser = { readonly name: string; readonly age: number; }- ํ์ T์ ๋ชจ๋ ์์ฑ์ ์ฝ๊ธฐ ์ ์ฉ(readonly)์ผ๋ก ๋ง๋ญ๋๋ค.
Pick<T, K>
interface User {
name: string;
age: number;
email: string;
}
type PickUser = Pick<User, 'name' | 'age'>;
// PickUser = { name: string; age: number; }- ํ์ T์์ ์ง์ ๋ ํค K๋ง ์ ํํ์ฌ ์๋ก์ด ํ์ ์ ๋ง๋ญ๋๋ค.
Omit<T, K>
interface User {
name: string;
age: number;
email: string;
}
type OmitUser = Omit<User, 'email'>;
// OmitUser = { name: string; age: number; }- ํ์ T์์ ์ง์ ๋ ํค K๋ฅผ ์ ์ธํ ์๋ก์ด ํ์ ์ ๋ง๋ญ๋๋ค.
Record<K, T>
type Role = 'admin' | 'user' | 'guest';
type UserRecord = Record<Role, string>;
// UserRecord = { admin: string; user: string; guest: string; }- ํค ํ์ K์ ๊ฐ ํ์ T๋ก ๊ตฌ์ฑ๋ ๊ฐ์ฒด ํ์ ์ ์์ฑํฉ๋๋ค.
Exclude<T, U>
type MyUnion = 'a' | 'b' | 'c'; type Excluded = Exclude<MyUnion, 'a'>; // Excluded = 'b' | 'c'
- ํ์ T์์ U์ ํ ๋น ๊ฐ๋ฅํ ํ์ ์ ์ ์ธํฉ๋๋ค.
Extract<T, U>
type MyUnion = 'a' | 'b' | 'c'; type Extracted = Extract<MyUnion, 'a' | 'b'>; // Extracted = 'a' | 'b'
- ํ์ T์์ U์ ํ ๋น ๊ฐ๋ฅํ ํ์ ๋ง ์ถ์ถํฉ๋๋ค.
NonNullable<t></t>
type Nullable = string | null | undefined; type NonNullableType = NonNullable<Nullable>; // NonNullableType = string
- null ๋๋ undefined๊ฐ ํฌํจ๋ ํ์ ์ ์์ ํ๊ฒ ๋ค๋ฃฐ ๋ ์ฌ์ฉ.
ReturnType<t></t>
function getUser() {
return { name: 'Alice', age: 30 };
}
type UserReturn = ReturnType<typeof getUser>;
// UserReturn = { name: string; age: number; }- ํจ์ ํ์ T์ ๋ฐํ ํ์ ์ ์ถ์ถํฉ๋๋ค.
Parameters<t></t>
function add(a: number, b: string): string {
return `${a}${b}`;
}
type AddParams = Parameters<typeof add>;
// AddParams = [number, string]- ํจ์ ํ์ T์ ๋งค๊ฐ๋ณ์ ํ์ ์ ํํ(tuple) ํ์ ์ผ๋ก ์ ์๋์์ต๋๋ค. ํํ์ ๋ฐฐ์ด๊ณผ ์ ์ฌํ์ง๋ง, ๊ณ ์ ๋ ๊ธธ์ด์ ๊ฐ ์์์ ํ์ ์ด ๋ช ์์ ์ผ๋ก ์ ์๋ ๋ฐฐ์ด์ ๋๋ค.
Awaited<t></t>
type PromiseType = Promise<string>; type ResolvedType = Awaited<PromiseType>; // ResolvedType = string
- Promise ํ์ T์ ํด๊ฒฐ(resolve) ํ์ ์ ์ถ์ถํฉ๋๋ค. ๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ ํ์ ์ ๋ค๋ฃฐ ๋ ์ฌ์ฉ.
Uppercase<t> Lowercase<t>, Capitalize<t>, Uncapitalize<t></t></t></t></t>
type Greeting = 'hello world'; type UpperGreeting = Uppercase<Greeting>; // UpperGreeting = 'HELLO WORLD' type CapitalizedGreeting = Capitalize<Greeting>; // CapitalizedGreeting = 'Hello world'
- ๋ฌธ์์ด ๋ฆฌํฐ๋ด ํ์ ์ ๋๋ฌธ์, ์๋ฌธ์, ์ฒซ ๊ธ์ ๋๋ฌธ์, ์ฒซ ๊ธ์ ์๋ฌธ์๋ก ๋ณํํฉ๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด ํ์ ์ ๋ณํํ ๋ ์ฌ์ฉ.