타입스크립트 간단 정리 - any, unknown, never

Hanji·2022년 2월 27일
0
post-custom-banner

any

  • 타입검사 항상 만족
  • 의도치 않은 사이드 이펙트 발생할 수 있음 (의도치 않은 형 변환이나 전혀 예상하지 못한 의도되지 않은 타입의 값이 대입되는 등)

ex)

let a: any;
a = 123; // a에 숫자 할당

let str: string = a; // string = any 이므로 에러 발생하지 않음.

a = {}; //na에 object 할당
const b = a-1 // 에러 발생하지 않음

unknown

  • unknown 타입엔 모든 자료 다 집어넣을 수 있음
  • 자료집어넣어도 타입은 그대로 unknown이다.
  • 모든 타입의 공통적인 연산밖에 할 수 없음
let a: unknown;
a = 123;

let str: string = a; // 🚨Error. 타입이 지정된 변수에 할당 못함
const b = a-1; // 🚨Error. - 는 number에 대한 연산이므로 안됨.

// 할당하기 위해서는 아래와 같이 타입을 명시필요.
let str2: string = (a as string);

any와 unknown 차이🤔?
any는 의도치 않은 사이드 이펙트 발생할 수 있으나 unknown은 최소의 공통적인 연산만 가능하므로 any 보다 unknown이 좀더 안전한 편

never

  • 모든 타입의 하위 타입
  • never 타입에는 할당 못함.
//1. 함수 반환값 never로 사용하는 경우 : 타입 추론 예외 제거
function throwError(errorMsg: string): never { 
  throw new Error(errorMsg); 
} 



//2. 특정 타입 값을 할당 받지 못하게 할때 : T가 string이면 never를 반환해서 NonString 타입을 사용하는 변수에 string타입이 올 경우 문제를 발생시킴
type NonString<T> = T extends string ? never : T;

const a: NonString<number> = 1 //ok
const b: NonString<boolean> = true // ok
const c: NonString<string> = '1' //🚨Error.

[타입스크립트] any, unknown 그리고 never 의 차이점
TypeScript의 unknown, any 그리고 never

post-custom-banner

0개의 댓글