Index Type
[]๋ฅผ ์ฌ์ฉํ๋ฉด index Type์ ๋ง๋ค ์ ์์ต๋๋ค. computed property์ฒ๋ผ ๊ณ์ฐ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
type Animal = {
name: string;
age: number;
gender: 'male' | 'female';
};
type Name = Animal['name']; // string
const text: Name = 'hello';
Mapped Type
type์ key์ index type์ ์ฌ์ฉํ๋ฉด ์ ๋ฌ๋ฐ์ ํ์
์ ๋ชจ๋ ์์๋ฅผ ํ๋ฐํด ์ํํฉ๋๋ค.
[P in keyof T]: ์ ๋ ๋ฆญ T์ ํค๋ฅผ ์ํ
T[P]: P๋ฅผ ํค๋ก ํ T์ value property
type Nullable<T> = { [P in keyof T]: T[P] | null };
const obj2: Nullable<Video> = {
title: 'hi',
author: null,
};
type Proxy<T> = {
get(): T;
set(value: T): void;
};
type Proxify<T> = {
[P in keyof T]: Proxy<T[P]>;
};
Conditinal Type
์กฐ๊ฑด์ ๋ฌ์์ ํ์
์ ์ง์ ํ ์ ์์ต๋๋ค. 3ํญ ์ฐ์ฌ์ ์ฌ์ฉ.
type Check<T> = T extends string ? boolean : number;
type Type = Check<string>; // boolean
ReadOnly
์์ ์ด ๋ถ๊ฐ๋ฅํ ํ์
์ ๋ง๋ฆ.
type ToDo = {
title: string;
description: string;
};
function display(todo: Readonly<ToDo>) {
// todo.title = 'jaja';
}
Partial Type
์ต์
๋ ํ๋กํผํฐ๋ก ๋ง๋ฆ
type ToDo = {
title: string;
description: string;
label: string;
priority: 'high' | 'low';
};
function updateTodo(todo: ToDo, fieldsToUpdate: Partial<ToDo>): ToDo {
return { ...todo, ...fieldsToUpdate };
}
Pick Type
์ ๋ฌ๋ฐ์ ํ์
์ ์ผ๋ถ ์์๋ค๋ง ์ฌ์ฉ
type Video = {
id: string;
title: string;
url: string;
data: string;
};
type VideoMetadata = Pick<Video, 'id' | 'title'>;
function getVideoMetadata(id: string): VideoMetadata {
return {
id: id,
title: 'title',
};
}
Omit Type
pick type์ ๋ฐ๋๋ก ์ผ๋ถ ์์๋ฅผ ์ ์ธํ๊ณ ์ฌ์ฉ
type Video = {
id: string;
title: string;
url: string;
data: string;
};
type VideoMetadata = Omit<Video, 'url' | 'data'>;
function getVideoMetadata(id: string): VideoMetadata {
return {
id: id,
title: 'title',
};
}
Record
์ฒซ ๋ฒ์งธ ์ ๋ค๋ฆญ์ด ํค, ๋ ๋ฒ์งธ ์ ๋ค๋ฆญ์ด ๋ฐธ๋ฅ๊ฐ ๋์ด์ ์๋ก์ด ํ์
์ ์กฐํฉํจ.
type PageInfo = {
title: string;
};
type Page = 'home' | 'about' | 'contact';
const nav: Record<Page, PageInfo> = {
home: { title: 'Home' },
about: { title: 'About' },
contact: { title: 'Contact' },
};
Capitalize, Uppercase, Lowercase
ํ์
๊ฐ๋ค์ ์๋ฌธ๋ฒ ํ๊ธฐ๋ฒ์ ๋ฐ๊ฟ์ค. ๋ฐฑ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ํต์ผ์ฑ์์ด ์ฃผ๊ฑฐ๋ ํ ๋ ๋ง์ถ๊ธฐ์ ์ฉ์ดํจ.