Any 타입
JavaScript에는 없고 TypeScript에만 있는 any 타입에 대해 알아보겠습니다. any 타입은 말 그대로 어떤 타입도 받을 수 있습니다. TypeScript의 기본적으로 타입 확인 없이 쓸 수 있습니다. 어찌 보면 TypeScript을 사용하는 목적과 멀기 때문에 일반적으로는 잘 사용하지 않겠지만 하지만 살다 보면 any 타입을 사용해야 할 때가 있습니다. 우선 any 타입은 모두 소문자여야 합니다.
// the any type
let thing: any = "hello"; //This is not a great idea!
thing = 1;
thing = false;
thing();
thing.toUpperCase();
const movies = ["Arrival", "The Thing", "Aliens", "Amadeus"];
let foundMovie: string;
for (let movie of movies) {
if (movie === "Amadeus") {
foundMovie = "Amadeus";
}
}
앞서 말했듯 TypeScript이 타입을 추론하기 때문에 일반적으로 하진 않지만 지금은 방법이 없으니 any 타입에 직접 변수를 할당합니다. 그럼 thing을 any 타입으로 지정하고 문자열과 같다고 가정합니다. 이제 변수를 바꿔보면 숫자든 불리언이든 배열이든 모든 타입으로 바꿀 수 있습니다. 이뿐만 아니라 오류 없이 변수 자체를 함수로 호출할 수도 있습니다.
toUpperCase와 같이 변수에 존재하지 않는 메서드에도 접근할 수 있습니다. 지금 thing에는 불리언 값인 false가 할당된 상태인데 toUpperCase라는 불리언 메서드는 없습니다. 지금까지 한 부분은 주석으로 처리하고 다른 타입도 이게 가능한지 확인해 봅니다.
변수 thing에 hello을 쓰면 TypeScript이 문자열이라 추론합니다. 그러고 아까처럼 thing을 함수로 호출하려고 하면 이번에는 TypeScript이 오류가 있다고 표시해 줍니다. 문자열이고 호출할 수 없는 대상이라고 알려줍니다. 그리고 존재하지 않는 메서드에 접근하려고 시도하면 오류가 발생합니다.
any 타입은 TypeScript에서 기본적으로 확인하는 걸 무시합니다. 사용할 일이 흔하진 않지만 필요한 상황을 마주하게 될 건데 어떤 상황인지 다음번에 알아보겠습니다.
'SW > TypeScript' 카테고리의 다른 글
TypeScript : 함수 파라미터 애노테이션 : 개념, 예제, 설명 (0) | 2023.04.08 |
---|---|
TypeScript : 지연된 초기화 및 암묵적 Any : 개념, 예제, 설명 (0) | 2023.04.07 |
TypeScript : 타입 애노테이션 : 개념, 예제, 설명 (1) | 2023.04.05 |
TypeScript : Type Inference : 타입 추론 개념, 예제, 설명 (0) | 2023.04.04 |
TypeScript : 컴파일 방법, 예제, 개념 (0) | 2023.04.03 |