본문으로 건너뛰기

아이템 39 any를 구체적으로 변형해서 사용하기

함수의 매개변수가 객체지만 값을 알 수 없다면 모든 비기본형 타입을 포함하는 object 타입을 사용할 수 있다. object 타입은 객체의 키를 열거할 수는 있지만 속성에 접근할 수 없다.

함수의 타입에도 단순히 any 를 사용해서는 안 된다. 최소한으로나마 구체화할 수 있는 세 가지 방법이 있다.

type Fn0 = () => any;
type Fn1 = (arg: any) => any;
type FnN = (...args: any[]) => any;
  • 매개변수 없이 호출 가능한 모든 함수
  • 매개변수 1개
  • 모든 개수의 매개변수
  • “Function” 타입과 동일하다.

요약

  • any 를 사용할 때는 정말로 모든 값이 허용되어야만 하는지 면밀히 검토해야한다.
  • any 보다 더 정확하게 모델링 할 수 있도록 any[] 또는 {[id: string]: any} 또는 () => any 처럼 구체적인 형태를 사용해야 한다.