타이프스크립트: 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 연산자로 타입 검증 후 사용해야 함