타입스크립트에는
any라는 특별한 타입이 존재한다. 타입체킹 에러가 발생하지 않도록any타입을 사용할 수 있다.
타입스크립트의 any 타입은 모든 타입을 열어 놓은 자바스크립트와 같다고 볼 수 있다.
const getAny = (arg1: any, arg2: any, arg3: any): [any, any, any] => {
console.log(arg1 + 100); // any는 아무거나 다 됨!😡
return [arg3, arg2, arg1];
};
const result2 = getAny("철수", 123, true);
any 타입으로 지정할 수 있다.any 타입의 입력값에 대해 출력되는 값의 타입도 알 수 없기 때문에 any 타입으로 지정하였다.arg1 매개변수가 어떤 타입인지 모르기 때문에, 에러가 발생하지 않고 100을 더할 수 있다.자바스크립트 프로젝트를 타입스크립트로 마이그레이션하는 경우가 아니라면
any타입을 사용하지 말 것
any를 "타입 체크를 진행하지 않는다"로 취급한다.any 타입은 자바스크립트 프로젝트를 타입스크립트로 처음으로 마이그레이션하는 경우에는 유용하다.unknown을 사용할 수 있다.
unknown타입은 모든 값을 나타낸다.any타입과 유사하지만,any타입보다 안전하다. 왜냐하면unknown값으로 작업하는 것이 허용되지 않기 때문이다.
unknown 타입에는 any 타입처럼 모든 타입이 들어갈 수 있지만, 아직 어떤 타입을 사용해야 할지 모를 때 사용하는 타입이다.
함수에서 any 타입의 값을 받지 않고 싶지만, 어떤 값이라도 받고 싶은 경우에 unknown 타입이 유용하다.
const getUnknown = (arg1: unknown, arg2: unknown, arg3: unknown): [unknown, unknown, unknown] => {
// arg1의 값이 어떤 타입인지 먼저 확인해야 한다.
if (typeof arg1 === "number")
// any 타입보다 안전한 코딩이 가능하다.
console.log(arg1 + 100);
return [arg3, arg2, arg1];
};
const result3 = getUnknown("철수", 123, true);
unknown이다.any 타입과 다르게 unknown 타입에는 곧바로 + 연산자를 적용할 수 없기 때문에 타입이 number 타입인지 먼저 확인해야 한다.any 타입보다 안전하게 사용할 수 있다.