any 타입
특정 변수의 타입을 우리가 확실히 모를 때 어떤 타입이던지 넣을 수 있다.
모든 타입의 값을 할당 받을 수 있고 모든 타입의 변수에 넣을 수 있다.
// any 타입
let anyVar: any = 10;
anyVar = "hello";
anyVar = true;
anyVar = {};
anyVar = () => {};
anyVar.toUpperCase(); // 런타임 시 오류 발생하므로 최대한 사용하지 않는 것이 좋다.
anyVar.toFixed();
let num: number = 10;
num = anyVar;
unknown 타입
any 타입과 비슷하지만 함수, 연산이 불가능하고 변수에 넣는 것을 불가능하다.
// unknown 타입
let unknownVar: unknown;
unknownVar = "hello";
unknownVar = true;
unknownVar = {};
unknownVar = () => {};
// 함수, 연산 불가능
unknownVar.toUpperCase();
unknownVar.toFixed();
// 변수에 넣는 것은 불가능
num = unknownVar;
// 타입 정제 or 타입 좁히기를 통해 변수에 넣는 것은 가능
if (typeof unknownVar === "number") {
num = unknownVar;
}
void 타입
공허 → 아무것도 없다
변수에 undefined를 넣는 것은 가능하지만 다른 것을 넣는 것을 모두 불가능하다.
// void 타입
// 함수에도 return 값의 타입을 지정할 수 있다.
function func1(): string {
return "hello";
}
// 아무것도 반환하고 싶지 않을 때 사용
function func2(): void {
console.log("hello");
}
// null을 반드시 반환해야한다. 아무것도 반환하지 않으면 오류 발생
function func3(): null {
return null;
}
let a: void;
// undefined는 가능
a = undefined;
// 모두 불가능
a = 1;
a = {};
a = "";
a = null; //"strictNullChecks": false시 가능
never 타입
존재하지 않는 → 불가능한 타입
변수에 값을 넣는 것은 모두 불가능하다.
// never 타입
// 종료되지 않기 때문에 반환할 수 없는 경우
function func4(): never {
while (true) {}
}
// 실행하면 바로 프로그램이 중지되는 경우
function func5(): never {
throw new Error();
}
let b: never;
let anyVar: any;
// 모두 불가능
b = 1;
b = {};
b = "";
b = undefined;
b = null; //"strictNullChecks": false로 바꿔도 불가능
b = anyVar;
이정환님의 인프런 강의 "한 입 크기로 잘라 먹는 타입스크립트(TypeScript)"를 참고하여 작성하였습니다.
'Web > TypeScript' 카테고리의 다른 글
[TS] 타입스크립트 이해하기 - 대수 타입, 타입 추론 (1) | 2024.11.14 |
---|---|
[TS] 타입스크립트 이해하기 - 타입 계층도, 타입 호환성 (0) | 2024.11.11 |
[TS] 타입 별칭과 인덱스 시그니처, Enum 타입 (0) | 2024.11.07 |
[TS] 원시 타입, 리터럴 타입, 배열과 튜플, 객체 (0) | 2024.11.05 |
[TS] 타입스크립트 환경 기본 설정 (0) | 2024.11.05 |