타이프스크립트: any 대신 unknown을 사용하는 이유
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 타겟: TypeScript를 사용하는 프론트엔드/백엔드 개발자
- 난이도: 중간 (타입스크립트의 타입 시스템 기초 지식 필요)
핵심 요약
any
는 타입 검사를 완전히 비활성화하여 런타임 오류 위험을 증가시킴unknown
은 값의 타입을 사전 검증을 통해 안전하게 사용 가능unknown
을 사용하면 코드 안정성과 디버깅 효율성 향상
섹션별 세부 요약
1. 유연한 타입: any와 unknown
any
- 모든 값 허용 (예:
let valueAny: any = 123;
) - 타입 검사 비활성화 → 런타임 오류 가능성 증가
unknown
- 값 허용은 하지만 사전 타입 검증 필수
- 예:
let valueUnknown: unknown = "Hello"; if (typeof valueUnknown === "string") { ... }
2. 실무 예제: any의 위험성
any
사용 시
```ts
function fetchDataAny(name: any): any {
return name;
}
const data1 = fetchDataAny(20); // number 타입 전달
console.log(data1.toUpperCase()); // 런타임 오류 발생
```
- 문제: 컴파일 시 오류 없음 → 대규모 프로젝트에서 디버깅 어려움
3. unknown의 안전한 사용법
unknown
사용 시
```ts
function fetchDataUnknown(name: unknown): { name: string } {
if (typeof name !== "string") {
throw new Error("Invalid argument: 'name' must be a string.");
}
return { name };
}
```
- 장점: 타입 검증 강제 → 런타임 오류 예방 및 코드 안정성 향상
4. 결론: unknown 선호 이유
any
는 타입 검사를 완전히 무시 → 潜伏 버그 발생 가능성unknown
은 안전한 타입 검증을 통해 예측 가능한 코드 생성
결론
unknown
을 사용해 타입 검증을 강제하고,any
는 사용 금지 → 코드 안정성과 유지보수성 향상- 예:
unknown
을 사용할 때는typeof
,instanceof
,in
연산자로 타입 검증 후 사용해야 함