호출할 수 없는 오류 대응

6606 단어 TypeScript잘못tech

개시하다


업무 수행 중 This expression is not callable. Type String has no call signatures라는 잘못된 정보를 만났기 때문에 비망록으로 기술한다.

오류 메시지 이해

This expression is not callable. Type String has no call signatures이 오류 메시지는 다음과 같은 상황에서 발생합니다.
  • String 호출 형식을 함수로 할 때
  • 함수형을 String형으로 추론할 때
  • ▶ 구체적인 예시String 유형을 함수로 호출할 때)
    index.ts
    const string = 'write something';
    
    string(); // エラーが発生する
    
    단, 아래의 상황은 실행할 수 있다.
    index.ts
    const string = 'write something';
    
    console.log(string.toUpperCase()); // エラーは発生せず、実行される 
    
    string()가 아니라 참조build-in methods로 수행합니다.
    ▶ 구체적인 예(함수를 String형으로 추론할 때)
    index.ts
    function exampleFunction (): any {
      return (a: number, b: number) => {
        return a + b;
      };
    }
    
    const result = exampleFunction() as string;
    result(50, 50); // エラーが発生する
    
    변수result에 함수가 저장되어 있어도
    메모리 값의 유형 추론은 String 유형이다.
    물론 실행할 수 없으면 오류가 발생할 수 있습니다.

    조우시의 대응

  • 함수로 호출된 값이 실제 함수인지 확인했습니까?
  • 함수는 모드 추론을 정확하게 진행했습니까?
  • 최후


    이런 일이 일어날 수 있기 때문에 사용하지 않겠다as의 이상에 접근하고 싶다.
    나는 다음과 같은 유형의 별명과 인터페이스를 익히고 싶다.
    index.ts
    // 型エイリアス
    type ExampleFunction = (a: number, b: number) => number;
    const exampleFunction: ExampleFunction = (a, b) => a + b;
    console.log(funcA(25, 25));
    
    // インターフェース
    interface ExampleFunction {
      (a: number, b: number): number;
    }const exampleFunction: ExampleFunction = (a, b) => a + b;
    

    좋은 웹페이지 즐겨찾기