콜론 뒤에 타입을 추가합니다. TypeScript는 많은 타입을 **추론(infer)**할 수 있으므로, 명확성을 더하거나 추론이 불가능한 곳에 어노테이션합니다.
ts
: = ;
name = ;
(): {
name.(times);
}
: [] = [, , ];
: { : ; : } = { : , : };
콜론 뒤에 타입을 추가합니다. TypeScript는 많은 타입을 **추론(infer)**할 수 있으므로, 명확성을 더하거나 추론이 불가능한 곳에 어노테이션합니다.
: = ;
name = ;
(): {
name.(times);
}
: [] = [, , ];
: { : ; : } = { : , : };
function add(a: number, b: number) { return a + b; } // 반환 추론: number
function load(): Promise<User> { ... } // 명시적 — 계약을 문서화
반환 타입은 추론되지만, 내보내거나 공개되는 함수에 어노테이션하는 것은 좋은 관행입니다: 의도를 문서화하고 함수 내부의 실수를 잡아냅니다(잘못된 것을 실수로 반환하면 오류가 호출자가 아니라 그 함수를 가리킵니다).
function log(msg: string): void {} // 아무것도 반환하지 않음
function fail(): never { throw new Error(); } // 정상적으로 반환하지 않음
const fn: (x: number) => string = ...; // 함수 타입 어노테이션
경험칙: 함수 시그니처(매개변수와 공개 반환 타입)는 명시적으로 어노테이션하고, 지역 변수는 추론에 맡겨라. 이렇게 하면 코드를 간결하게 유지하면서도 함수 경계의 계약을 명확하고 검사된 상태로 유지합니다.