한달 안에 프로젝트를 끝내야 하는 상황에서 메인프로젝트 멘토님께서 타입스크립트를 사용하는게 공부가 많이 돼고, 앞으로 개발 공부에 도움이 많이 될거라는 조언을 주셨다.
사실 프리프로젝트에서 자바스크립트로 클론코딩을 하는 도중에 배포하는데 실패한 경험도 있고, 2주 라는 짧은 시간이였지만, 거의 밤을 샌 적이 많아서.. 새로운 언어를 사용한다는데 부담이 많이 되었다..😢
하지만 팀원들이 원했고, 나도 부담은 됐지만, 부딪혀보자 라는 마인드로 타입스크립트를 쓰기로 결정했다!!
사실 시작도 전에 초기 환경 설정에서 CRA하는 것과 다르고, 여러가지 라이브러리를 타입스크립트로 install하는 것 부터 삐걱였지만..?🥲 나는 혼자가 아니고, 같은 메인팀원들과 함께 할 생각을 하니 매우 든든하다! 화이팅!!💪💪🦾🦾
1. npm create-react-app
2. npm install typscript
@types/node
@types/react
@types/react-dom
@types/jest
@types/react-router-dom
1. npm create vite@latest
# - ok to process ? (y) => y
# - project name - viteProject => 자신의 프로젝트 이름 작성
# - select a framework => React
# - select a variant => Typescript
2. cd test
3. npm install
4. npm run dev -> http://127.0.0.1:5173/ (localhost)
function App () {
return (
<h1>hello</h1>
)
}
export default App
npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint typescript
{
"root": true,
"env": {
"browser": true,
"commonjs": true,
"es6": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:jsx-a11y/strict",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:@typescript-eslint/recommended",
"plugin:testing-library/react",
"prettier"
],
"plugins": [
"react",
"react-hooks",
"jsx-a11y",
"import",
"@typescript-eslint"
],
"settings": {
"import/resolver": {
"typescript": {
"alwaysTryTypes": true
}
},
"react": {
"version": "detect"
}
},
"rules": {
"no-console": "error",
"import/prefer-default-export": "off"
},
"overrides": [
{
"files": "**/*.+(ts|tsx)",
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"extends": ["plugin:@typescript-eslint/recommended"]
},
{
"files": ["**/__tests__/**/*", "**/*.{spec,test}.*"],
"env": {
"jest/globals": true
},
"plugins": ["jest", "jest-dom", "testing-library"],
"extends": [
"plugin:jest/recommended",
"plugin:jest-dom/recommended",
"plugin:testing-library/react"
]
}
]
}
{
"semi": true,
"singleQuote": false,
"printWidth": 120,
"useTabs": false,
"tabWidth": 2,
"trailingComma": "all",
"bracketSpacing": true,
"endOfLine": "auto"
}