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'
- ๋ฌธ์์ด ๋ฆฌํฐ๋ด ํ์ ์ ๋๋ฌธ์, ์๋ฌธ์, ์ฒซ ๊ธ์ ๋๋ฌธ์, ์ฒซ ๊ธ์ ์๋ฌธ์๋ก ๋ณํํฉ๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด ํ์ ์ ๋ณํํ ๋ ์ฌ์ฉ.