number
, string
, boolean
, void
, null
, undefined
등.Object
, Array
, Function
등.type
또는 interface
로 선언.never
타입:
function throwError(message: string): never {
throw new Error(message);
}
[key: string]: valueType
.
interface Dictionary {
[key: string]: string;
}
const dictionary: Dictionary = {
hello: "안녕하세요",
world: "세계",
}
Union
타입 필요:interface User {
name: string;
[key: string]: string | number;
}
const subtract = (a: number, b: number): number => a - b
async function fetchUser(): Promise<{ id: number; name: string }> {
const response = await fetch("/api/user");
return response.json();
}
제네릭 함수:
function getFirstElement<T>(arr: T[]): T {
return arr[0];
}
제네릭 인터페이스:
interface Box<T> {
value: T;
제네릭 클래스:
class Stack<T> {
private items: T[] = [];
push(item: T): void {
this.items.push(item);
}
pop(): T | undefined {
return this.items.pop();
}
}
never
타입과 시그니처 인덱스를 통해 타입 안정성을 강화할 수 있음.