#39 Any의 특정 변형 사용

효과적인 TypeScript 읽기 및 정리(Dan Vanderkam 저)

요약

어떤 것보다 정확한 모델링을 위해 어느() / {(키: 문자열): 모두} / () => 모두 예를 들어 특정 형식을 사용해야 합니다.

아무거나

JavaScript로 표현할 수 있는 모든 값을 포괄하는 매우 광범위한 유형.

– 원시 값

– 정규 표현식

– 수업

– DOM 요소 등 포함

어떤 종류의 값도 정규 표현식이나 함수에 직접 삽입하지 마십시오.

– 아래 코드에서 배열이 아닌 경우를 필터링하기 위해 any 대신 any()를 사용할 수 있습니다.

function getLengthBad(array: any) {  // Don't do this!
  return array.length;
}

function getLength(array: any()) { // 차라리 이렇게
  return array.length;
}

getLengthBad(/123/);  // 에러 탐지 불가
getLength(/123/);
       // ~~~~~ Argument of type 'RegExp' is not assignable
       //       to parameter of type 'any()'

요소의 종류와 상관없이 2차원 배열에 아무거나 사용하고 싶다면 어느()() 방법을 설명하다

오브젝트에 있는 값의 타입을 모르는 경우 {(키: 문자열): 모두} 방법을 설명하다

function getLengthBad(array: any) {  // Don't do this!
  return array.length;
}

function getLength(array: any()) {
  return array.length;
}
function hasTwelveLetterKey(o: {(key: string): any}) {
  for (const key in o) {
    if (key.length === 12) {
      return true;
    }
  }
  return false;
}

물체사용할 수 있지만 속성에 액세스할 수 없기 때문에 내부적으로 오류가 발생합니다.

(사용하지 않는 것이 좋음)

function getLengthBad(array: any) {  // Don't do this!
  return array.length;
}

function getLength(array: any()) {
  return array.length;
}
function hasTwelveLetterKey(o: object) {
  for (const key in o) {
    if (key.length === 12) {
      console.log(key, o(key));
                   //  ~~~~~~ Element implicitly has an 'any' type
                   //         because type '{}' has no index signature
      return true;
    }
  }
  return false;
}

IN 기능을 사용하는 3가지 방법

function getLengthBad(array: any) {  // Don't do this!
  return array.length;
}

function getLength(array: any()) {
  return array.length;
}
type Fn0 = () => any;  // 매개변수 없이 호출 가능한 모든 함수
type Fn1 = (arg: any) => any;  // 매개변수 1개
type FnN = (...args: any()) => any;  // 여러 매개변수
                                     // Function 타입과 동일

type FnN = (…args: any()) => any; ~에

…args: any와 같이 할 수 있지만 위와 같이 배열로 선언하면 더 구체적입니다.