타입스크립트/고급 타입

JS에 TS 적용하기

webmaster 2022. 10. 18. 19:26
728x90

자바스크립트 코드에 타입스크립트를 적용할 때 주의해야 할 점

  • 기능적인 변경은 절대 하지 않을 것
  • 테스트 커버리지가 낮을 땐 함부로 타입스크립트를 적용하지 않을 것
  • 처음부터 타입을 엄격하게 적용하지 않을 것 (점진적으로 strict 레벨을 증가)

타입스크립트 프로젝트 환경 구성

  • 프로젝트 생성 후 NPM 초기화 명령어로 package.json 파일을 생성.
  • 프로젝트 폴더에서 npm i typescript -D로 타입스크립트 라이브러리를 설치.
  • 타입스크립트 설정 파일 tsconfig.json을 생성하고 기본 값을 추가
  • 서비스 코드가 포함된 자바스크립트 파일을 타입스크립트 파일로 변환
  • 타입스크립트 컴파일 명령어 tsc로 타입스크립트 파일을 자바스크립트 파일로 변환

엄격하지 않은 타입 환경(loose type)에서 프로젝트 돌려보기

  • 프로젝트에 테스트 코드가 있다면 테스트 코드가 통과하는지 먼저 확인
  • 프로젝트의 js 파일을 모두 ts 파일로 변경
  • 타입스크립트 컴파일 에러가 나는 것 위주로만 먼저 에러가 나지 않게 수정
    • 여기서, 기능을 사소하게라도 변경하지 않도록 주의
  • 테스트 코드가 성공하는지 확인

명시적인 any 선언하기

  • 프로젝트 테스트 코드가 통과하는지 확인
  • 타입스크립트 설정 파일에 noImplicitAny: true를 추가
  • 가능한 타입을 적용할 수 있는 모든 곳에 타입을 적용.
    • 라이브러리를 쓰는 경우 DefinitelyTyped에서 @types 관련 라이브러리를 찾아 설치.
    • 만약, 타입을 정하기 어려운 곳이 있으면 명시적으로라도 any를 선언.
  • 테스트 코드가 통과하는지 확인

strict 모드 설정하기

https://www.typescriptlang.org/tsconfig#strict

 

TSConfig Reference - Docs on every TSConfig option

From allowJs to useDefineForClassFields the TSConfig reference includes information about all of the active compiler flags setting up a TypeScript project.

www.typescriptlang.org

{
  "strict": true,
  /* //strict를 키면 아래 옵션이 모두 켜진다
  "strictNullChecks": true,
  "strictFunctionTypes": true,
  "strictBindCallApply": true,
  "strictPropertyInitialization": true,
  "noImplicitThis": true,
  "alwaysStrict": true,
  */
}
  • 타입스크립트 설정 파일에 설정을 추가
  • any로 되어 있는 타입을 최대한 더 적절한 타입으로 변환
  • as와 같은 키워드를 최대한 사용하지 않도록 고민해서 변경
 
728x90

'타입스크립트 > 고급 타입' 카테고리의 다른 글

ES6 최신 문법  (0) 2022.10.22
맵드 타입  (0) 2022.10.18
유틸리티 타입  (0) 2022.10.18