All Articles

typescript 설정

입사하고 처음으로 맡게 된 백오피스 작업.
백오피스를 만들기 위해 프로젝트를 react와 typescript로 구성했다.

npx create-react-app projectName --typescript

명령어로 react, typescript를 설치했다.

tsconfig 파일이 생성되어있고 기본적으로 세팅도 되어있다.

포트폴리오 프로젝트도 typescript를 적용하기 위해 위 명령어를 사용해서 설치했었던 적이 있다.
그리고 그때의 tsconfig 파일과 현재의 tsconfig 파일은 좀 다르다. (포트폴리오 프로젝트 때 tsconfig 파일을 해당 블로그 글 참조)

{
  "rules": {
    "no-unused-expression": true
  },
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "downlevelIteration": false,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react",
    "strict": true,
    "strictNullChecks": true,
    "noImplicitReturns": false,
    "noImplicitAny": true,
    "noImplicitThis": true,
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "baseUrl": "src"
    // "typeRoots": ["node_modules/@types"]
  },
  "parserOptions": {
    "ecmaVersion": 5,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true,
      "experimentalObjectRestSpread": true
    }
  },
  "include": ["src/*"],
  "paths": {
    "*": ["*", "src/*"]
  }
}

.eslintrc.json 파일도 생성하고 설정해줬다.

{
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier/@typescript-eslint",
    "plugin:prettier/recommended"
  ],
  "plugins": ["react", "@typescript-eslint", "prettier"],
  "env": {
    "browser": true,
    "jasmine": true,
    "jest": true
  },
  "rules": {
    "prettier/prettier": [
      "error",
      {
        "singleQuote": true,
        "semi": true,
        "useTabs": false,
        "tabWidth": 2,
        "trailingComma": "all",
        "printWidth": 80
      }
    ]
  },
  "settings": {
    "react": {
      "pragma": "React",
      "version": "detect"
    }
  },
  "parser": "@typescript-eslint/parser"
}

이렇게 완료되어있는 상태만 보면 쉬워보이겠지만 tsconfig와 eslintrc 설정하면서 시행착오도 많았다.
지금도 뭔가 prettier, eslint가 원하는대로 작동하지는 않는다..

추가적인 글은 다음에…