
특정 변수의 타입을 확실히 모를 때 사용하는 문법
어떤 타입이던지 허용한다.
모든 타입의 값을 허용하며,
모든 타입의 변수에 any 타입의 변수를 할당할 수 있다.
let anyVar: any = 10;
anyVar = "hello";
anyVar = true;
anyVar = {};
anyVar = () => {};
anyVar.toUpperCase();
anyVar.toFixed();
let num: number = 10;
num = anyVar;
단 이 코드를 컴파일하고 실행하면 에러가 발생한다.
즉, 타입스크립트의 이점을 모두 포기하는 것과 같다.따라서 가능한 최대한 사용하지 않는 것이 좋다.
any와 유사하게 모든 타입을 허용하지만
모든 타입의 변수에 할당할 수 없다.
또한 any 타입에서 허용됐던 메서드 사용이 허용하지 않는다.
그리고 연산자 사용 또한 허용하지 않는다.위 사항들을 사용하기 위해서는
다음과 같이 unknown 타입이 어떤 타입(ex. Number)인지를 지정해줘야 한다.
이 방식을타입 정제또는타입 좁히기라고 한다.
let unknownVar: unknown;
unknownVar: "";
unknownVar: 1;
unknownVar: () => {};
if(typeof unknownVar === "number"){
num = unknownVar;
unknownVar.toString();
}
any와 다르게 unknown을 사용하면 조금 더 안전하기 때문에
필요한 경우, any 보다 unknown을 사용하는 것이 좋다.