Eclipse에서 Typescript의 타입 체크가 움직이지 않을 때 확인하는 것

Eclipse의 Typescript 에디터에서는, 가끔 타입 체크가 잘 움직이지 않고 any 이 되는 일이 있다. 메소드의 후보가 표시되지 않으면 귀찮기 때문에 어떻게든 하고 싶지만, 몇가지 원인이 있으므로 대부분은 시행착오가 된다. 몇 가지 잘 맞는 패턴을 아래에 요약합니다.


Typescript 버전이 다름



Eclipse의 Typescript 플러그인에서는, 타입을 체크하기 위한 트랜스파일러를 지정할 수 있다. 디폴트에서는 「내장」이 되어 있어, Package.json 로 인스톨 한 로컬의 트랜스파일러와는 관계가 없다. 이로 인해 "빌드는 가능하지만 편집기에서는 오류가 발생한다"는 불가해한 일이 일어난다.

Typescript 버전이 올바른지 확인하려면 Eclipse에서 Window > Preferences > JavaScript > Typescript > Runtime에서 다음 설정 화면을 엽니다. Consume Typescript With에서 Embedded를 선택한 경우 설치 후 시간이 지남에 따라 새 언어 사양을 처리하지 못하고 오류가 발생할 수 있습니다.


다음과 같은 설정이 있다고 생각한다.


Typescript 위치
경로


프로젝트별
${workspace_loc:프로젝트 이름/node_modules/typescript}

글로벌
/node_modules/typescript}


tsconfig 설정에 결함이 있음



상당히 함정이 있지만, Google 검색하면 주로 같은 과오에 걸린 사람이 있기 때문에, 주로 응답은 얻을 수 있다. 다음과 같은 경우가 있다. (이것은 트랜스 파일도 에러가 되기 때문에 특히 불가해는 아니지만…)

라이브러리를 지정하지 않음


Promise , HTMLElement , async/await , array.map 등 당연히 사용할 수 있는 것이 없다는 에러가 발생하는 경우

Typescript의 Compiler Options 목록 에서 선택할 수 있는 것을 조사하도록 한다.

tsconfig.json
{
  "compilerOptions": {
    "lib": [
      "es2015",
      "dom"
    ]
  }
}

JSX를 사용하지 않음



이것은 React 한정일지도 모른다. compilerOptionslib 으로 나누어져 있으므로, 잘못하지 않도록 한다.

tsconfig.json
{
  "compilerOptions": {
    "jsx": "react"
  }
}

데코레이터를 사용하지 않음



데코레이터는 사용하려고 하면 「이 설정을 유효하게 하는 것」이라고 표시되므로 바로 주의한다. (언제까지 experimental?)

tsconfig.json
{
  "compilerOptions": {
    "experimentalDecorators": true
  }
}

@types를 설치하지 않았습니다.



node로 es*을 사용할 수 없는 등, Javascript 라이브러리를 Typescript로 사용하려고 하는 경우에 일어난다. react에서 필요한 형식 정보를 설치하고 react-nativefs을 설정하면 해결됩니다.

tsconfig.json
{
    "typeRoots": [
      "node_modules/@types"
    ]
}

좋은 웹페이지 즐겨찾기