
두 타입 모두 타입 지정하기 애매할때 사용한다.
let anyVar : any = 10;
anyVar = "hello";
let num: number = 10;
num = anyVar
특정 변수의 타입을 우리가 확실히 모를때, 어떤 타입이든 넣을수 있다.
타입 검사를 안하는것과 같기 때문에 런타임 에러가 발생할 수 있다 .
any 타입은 최대한 사용하지 않는게 좋다.
function anyExam() {
let unknowVar : unknown;
let anyVar: any;
let undefined: undefined;
anyVar = unknownVar
undefined = anyVar
치트키와 같다.
업 다운 캐스팅이 모두 된다.
let unknownVar : unknown;
unknownVar = "";
unknownVar = 1;
unknownVar = () => {};
//num = unknownVar (x) 불가능
연산 불가 , 메서드 사용 불가하다
function unknowExam() {
let a: unknown = 1;
let b: unknown = "hello";
let c: unknown = true;
let d: unknown = null;
let e: unknown = undefined;
let unknowVar: unknown;
// let num : number = unknowVar; (x)
// let str : string = unknowVar; (x)
// let bool : boolrean = unknowVar (x)
}
업캐스팅만 가능하다.
never는 존재하지 않는 , 불가능한 타입이다.
반면에 void는 아무것도 없는것을 의미한다.
function func3(): never {
while (true) {}
}
function func4(): never {
throw new Error();
}
// let a : never; (x)
function neverExam() {
function neverFunc(): never {
while (true) {}
}
let num: number = neverFunc();
let str: string = neverFunc();
let bool: boolean = neverFunc();
// let never1 : never = 10;
// let never1 : never = "string";
// let never1 : never = true;
}
null 도 undefined도 안된다
그 어떤값도 저장할 수가 없음
function func1(): string {
return "hello";
}
function func2(): void {
console.log("hello");
}
let a: void;
a = undefined;
function voidExam() {
function voidFunc(): void {
console.log("hi");
}
let voiVar: void = undefined;
}