any 타입은 가능한 한 좁은 범위에서만 사용하기

any는 선언보다 단언을 활용하기

// 이것보다는
const x: any = expressionReturningFoo();
processBar(x);

// 이게 낫습니다.
const x = expressionReturningFoo();
processBar(x as any);

위에서 앞선 예시의 문제는 any 타입으로 선언된 x를 이용함에 따라 다른 코드에도 지속적으로 영향을 미치기 때문입니다. 반면, 뒤쪽 예시의 경우는 processBar의 호출에 대해서만 x를 any 타입으로 단언한 것이므로 다른 코드에는 영향을 미치지 않습니다.

가능한 좁게 any 타입을 사용하기

특정 객체의 한 프로퍼티가 타입 에러를 갖는 상황에 any를 사용해야만 한다면, 객체 전체를 any로 단언하기 보다는 해당 속성만 any로 단언하는 것이 좋습니다.

// 이것보다는 
// Type is any
const config: Config = {
  a: 1,
  b: 2,
  c: {
    key: value
  }
} as any;

// 이게 낫습니다.
// Type is { a: number, b: number, c: { key: any } }
const config: Config = {
  a: 1,
  b: 2,
  c: {
    key: value as any
  }
};