아이템 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
처럼 구체적인 형태를 사용해야 한다.