Type inference(타입 추론)는 TypeScript가 문맥으로부터 타입을 자동으로 알아내는 것으로, 모든 것을 어노테이션할 필요가 없게 해줍니다. 초기값, return 문, 사용처로부터 추론합니다.
ts
let x = 10; // 추론: number
let s = "hi"; // 추론: string
const arr = [1, 2]; // 추론: number[]
const obj = { : , : };
Type inference(타입 추론)는 TypeScript가 문맥으로부터 타입을 자동으로 알아내는 것으로, 모든 것을 어노테이션할 필요가 없게 해줍니다. 초기값, return 문, 사용처로부터 추론합니다.
let x = 10; // 추론: number
let s = "hi"; // 추론: string
const arr = [1, 2]; // 추론: number[]
const obj = { : , : };
function double(n: number) { return n * 2; } // 반환 추론: number
[1, 2, 3].map(n => n * 2); // 배열로부터 `n`이 number로 추론됨 — 어노테이션 불필요
이 contextual typing(문맥적 타이핑)이 콜백에 매개변수 어노테이션이 거의 필요 없는 이유입니다 — TypeScript는 number[]에 대한 map이 number를 전달함을 압니다.
let a = "hello"; // string으로 넓혀짐 (let은 재할당 가능)
const b = "hello"; // 리터럴 타입 "hello"로 좁혀짐
const는 결코 바뀔 수 없으므로 리터럴 타입을 추론하고, let은 일반 타입으로 넓힙니다. 이는 union에서 중요합니다:
const dir = "up"; // 타입 "up"
let dir2 = "up"; // 타입 string
string을 원할 때).const xs = []는 any[]로 추론됨 — number[]로 어노테이션.추론은 TypeScript 코드를 완전히 타입이 지정된 상태로 유지하면서도 JavaScript만큼 간결하게 유지합니다.
언제 추론이 작동하는지(그리고 언제 넓혀지는지)를 이해하면 실제로 도움이 되는 곳에만 어노테이션할 수 있습니다.