본문으로 건너뛰기

any

또한 타입스크립트에는 any라는 특수 타입이 있습니다. 이는 특정 값 때문에 타입 검사 오류가 발생하는 것을 원하지 않을 때 사용할 수 있습니다.

값이 any 타입이면, 값의 모든 프로퍼티(any 타입이 됨)에 접근하거나, 함수처럼 호출하거나, 모든 타입의 값에 할당하거나, 모든 타입의 값을 할당하는 등, 문법적으로 합법적인 거의 모든 것이 가능합니다.

ts
let obj: any = { x: 0 };
// 다음 코드 줄들은 컴파일러 오류를 발생시키지 않습니다.
// any를 사용하면 모든 추가 타입 검사가 비활성화됩니다.
// 그리고 여러분이 타입스크립트보다 환경을 더 잘 알고 있다고 가정합니다.
obj.foo();
obj();
obj.bar = 100;
obj = "hello";
const n: number = obj;
ts
let obj: any = { x: 0 };
// 다음 코드 줄들은 컴파일러 오류를 발생시키지 않습니다.
// any를 사용하면 모든 추가 타입 검사가 비활성화됩니다.
// 그리고 여러분이 타입스크립트보다 환경을 더 잘 알고 있다고 가정합니다.
obj.foo();
obj();
obj.bar = 100;
obj = "hello";
const n: number = obj;

any 타입은 특정 코드 줄이 괜찮다고 타입스크립트를 설득하기 위해, 긴 타입을 작성하고 싶지 않을 때 유용합니다.

noImplicitAny

타입을 지정하지 않았고 타입스크립트가 컨텍스트에서 추론할 수 없는 경우, 컴파일러는 일반적으로 타입을 any로 설정합니다.

그러나 일반적으로 any는 타입이 확인되지 않기 때문에 이를 피하는 것이 좋습니다. 컴파일러 플래그 noImplicitAny를 사용하면 암시적 any가 오류로 표시됩니다.