자바스크립트 프로젝트에 타입스크립트 적용하는 절차
1. 타입스크립트 프로젝트 환경 구성
- 프로젝트 생성 후 NPM 초기화 명령어로 package.json 파일을 생성
- 프로젝트 폴더에서 npm i typescript -D 로 타입스크립트 라이브러리를 설치한다.
- 타입스크립트 설정 파일 tsconfig.json 을 생성하고 기본 값을 추가한다.
- 서비스 코드가 포함된 JS 파일을 TS 파일로 변환한다.
- tsc 로 TS 파일을 JS 파일로 변환한다.
2. 엄격하지 않은 타입 환경(loose type)에서 프로젝트 돌려보기
- 프로젝트에 테스트 코드가 있다면 테스트 코드가 통과하는지 먼저 확인
- js 파일을 모두 ts 파일로 변경
- 타입스크립트 컴파일 에러가 나는 것 위주로 에러가 나지 않게 수정
- 기능 사소하게라도 변경 x
- 테스트 코드 확인
3. 명시적인 any 선언하기
- 프로젝트 테스트 코드 확인
- tsconfig.json 에 noImplicitAny: true 를 추가한다.
- 가능한 타입을 적용할 수 있는 모든 곳에 타입을 적용한다.
- 라이브러리를 쓰는 경우 관련 라이브러리를 찾아 설치한다.
- 타입을 정하기 어려운 곳이 있다면 명시적으로라도 any 를 선언한다.
- 테스트 코드가 통과하는지 확인한다.
4. strict 모드 설정하기
- tsconfig.json 에 설정 추가
{
"strict": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictBindCallApply": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"alwaysStrict": true,
}
- any로 되어 있는 타입을 최대한 더 적절한 타입으로 변환
- as와 같은 키워드를 최대한 사용하지 않도록 고민해서 변경
점진적인 타입 적용을 위한 프로젝트 환경 구성
프로젝트 라이브러리 설치
- 프로젝트 폴더 생성
- npm init -y 로 package.json 파일 생성
- 아래 명령어로 타입스크립트 및 문법 검사, 코드 정리 도구 라이브러리 추가
npm i -D typescript @babel/core @babel/preset-env @babel/preset-typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint prettier eslint-plugin-prettier
ESLint 설정 후 ESLint 플러그인 에러 해결
- 프로젝트 폴더 바로 아래에 ESLint 설정 파일 추가
// .eslintrc.js
module.exports = {
root: true,
env: {
browser: true,
node: true,
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
plugins: ['prettier', '@typescript-eslint'],
rules: {
'prettier/prettier': [
'error',
{
singleQuote: true,
semi: true,
useTabs: false,
tabWidth: 2,
printWidth: 80,
bracketSpacing: true,
arrowParens: 'avoid',
},
],
},
parserOptions: {
parser: '@typescript-eslint/parser',
},
};
- VSCode에서 ESLint 플러그인 설정이 안됐다면
- ESLint 플러그인 설치
- ctrl + shift + p 키 누른 후 open setting(json) 입력 후 선택
- setting.json 파일에 ESLint 플러그인 관련 설정 추가
{
// ... <-- 기존 내용을 꼭 유지한 상태에서 아래 내용을 추가하고 이 주석은 제거할 것
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.alwaysShowStatus": true,
"eslint.workingDirectories": [
{"mode": "auto"}
],
"eslint.validate": [
"javascript",
"typescript"
],
}
4. ctrl + , 에서 format on save 체크 해제 확인
'JSTS' 카테고리의 다른 글
[TS] 실습 4. 엄격한 타입 적용 (0) | 2022.07.28 |
---|---|
[TS] 실습 3. 외부 라이브러리 모듈화 (0) | 2022.07.26 |
[TS] 실습 1. 프로젝트 구성 및 타입 시스템 적용 (0) | 2022.07.16 |
[TS] 7. 유틸리티 타입, 맵드 타입 (0) | 2022.07.16 |
[TS] 6. 타입추론, 타입단언, 타입가드, 타입호환, 타입모듈화 (0) | 2022.07.14 |