https://github.com/ssi02014/covid19-chart-typescript
๐COVID19-Chart TypeScript
https://github.com/ssi02014/covid19-chart-typescript
Last synced: 8 months ago
JSON representation
๐COVID19-Chart TypeScript
- Host: GitHub
- URL: https://github.com/ssi02014/covid19-chart-typescript
- Owner: ssi02014
- Created: 2021-06-23T07:12:54.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-06-30T06:45:43.000Z (over 4 years ago)
- Last Synced: 2024-12-30T06:45:30.459Z (9 months ago)
- Language: TypeScript
- Homepage:
- Size: 289 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ป COVID19-Chart
### ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ ๋ COVID19-Chart๐๋ฅผ TypeScript๋ก ์ ์ง์ ์ ์ฉ ํ๋ก์ ํธ
## ๐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํ ๋ ์ฃผ์ํด์ผ ํ ์
- ๊ธฐ๋ฅ์ ์ธ ๋ณ๊ฒฝ์ ์ ๋ ํ์ง ์์ ๊ฒ
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋ฎ์ ๋ ํจ๋ถ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํ์ง ์์ ๊ฒ
- ์ฒ์๋ถํฐ ํ์ ์ ์๊ฒฉํ๊ฒ ์ ์ฉํ์ง ์์ ๊ฒ (์ ์ง์ ์ผ๋ก strict ๋ ๋ฒจ์ ์ฆ๊ฐ)
## ๐ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์ ํ์ ์คํฌ๋ฆฝํธ ์ ์ฉํ๊ธฐ
0. ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ JSDoc์ผ๋ก ํ์ ์์คํ ์ ํ๊ธฐ
1. ํ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ํ๊ฒฝ ๊ตฌ์ฑ
- [x] NPM ์ด๊ธฐํ
- [x] ํ์ ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
- [x] ํ์ ์คํฌ๋ฆฝํธ ์ค์ ํ์ผ ์์ฑ ๋ฐ ๊ธฐ๋ณธ ๊ฐ ์ถ๊ฐ
- [x] ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํ์ ์คํฌ๋ฆฝํธ ํ์ผ๋ก ๋ณํ
- [x] `tsc` ๋ช ๋ น์ด๋ก ํ์ ์คํฌ๋ฆฝํธ ๋ณํ
2. ๋ช ์์ ์ธ `any` ์ ์ธํ๊ธฐ
- `tsconfig.json`ํ์ผ์ `noImplicitAny`๊ฐ์ `true`๋ก ์ถ๊ฐ
- ๊ฐ๋ฅํ ๊ตฌ์ฒด์ ์ธ ํ์ ์ผ๋ก ํ์ ์ ์
3. ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ
- babel, eslint, prettier ๋ฑ์ ํ๊ฒฝ ์ค์
4. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ํ
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ `npm i`๋ก ์ค์น
5. `strict`์ต์ ์ถ๊ฐ ํ ํ์ ์ ์
## ๐จ๐ปโ๐ป ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์ ํ์ ์คํฌ๋ฆฝํธ ์ ์ฉ ์ ์ฐจ
1. ํ์ ์คํฌ๋ฆฝํธ ํ๊ฒฝ ์ค์ ๋ฐ ts ํ์ผ๋ก ๋ณํ
2. any ํ์ ์ ์ธ
3. any ํ์ ์ ๋ ์ ์ ํ ํ์ ์ผ๋ก ๋ณ๊ฒฝ### ๐ 1. ํ์ ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ
- ํ๋ก์ ํธ ์์ฑ ํ NPM ์ด๊ธฐํ ๋ช ๋ น์ด๋ก `package.json` ์์ฑ
- ํ๋ก์ ํธ ํด๋์์ `npm i typescript -D`๋ก ํ์ ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
- ํ์ ์คํฌ๋ฆฝํธ ์ค์ ํ์ผ `tsconfig.json`์ ์์ฑํ๊ณ ๊ธฐ๋ณธ ๊ฐ์ ์ถ๊ฐ```
npm i typescript -D //ํ์ ์คํฌ๋ฆฝํธ ๋ค์ด๋ก๋
npm init -y //package.json ์์ฑ
tsc --init //tsconfig.json ์์ฑ
```
```json
{
"compilerOptions": {
"allowJs": true,
"target": "ES5",
"outDir": "./dist",
"moduleResolution": "Node",
"lib": ["ES2015", "DOM", "DOM.Iterable"]
},
"include": ["./src/**/*"],
"exclude": ["node_modules", "dist"]
}
```- ์๋น์ค ์ฝ๋๊ฐ ํฌํจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํ์ ์คํฌ๋ฆฝํธ ํ์ผ๋ก ๋ณํํ๋ค.
- ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ ๋ช ๋ น์ด tsc๋ก ํ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ก ๋ณํํ๋ค.
### ๐ 2. ์๊ฒฉํ์ง ์์ ํ์ ํ๊ฒฝ(loose type)์์ ํ๋ก์ ํธ ๋๋ ค๋ณด๊ธฐ
- ํ๋ก์ ํธ์ ํ ์คํธ ์ฝ๋๊ฐ ์๋ค๋ฉด ํ ์คํธ ์ฝ๋๊ฐ ํต๊ณผํ๋์ง ๋จผ์ ํ์ธํฉ๋๋ค.
- ํ๋ก์ ํธ์ js ํ์ผ์ ๋ชจ๋ ts ํ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋ ๊ฒ ์์ฃผ๋ก๋ง ๋จผ์ ์๋ฌ๊ฐ ๋์ง ์๊ฒ ์์ ํฉ๋๋ค.
- ์ฌ๊ธฐ์, **๊ธฐ๋ฅ์ ์ฌ์ํ๊ฒ๋ผ๋ ๋ณ๊ฒฝํ์ง ์๋๋ก ์ฃผ์ํฉ๋๋ค.**
- ํ ์คํธ ์ฝ๋๊ฐ ์ฑ๊ณตํ๋์ง ํ์ธํฉ๋๋ค
### ๐ 3. ๋ช ์์ ์ธ any ์ ์ธํ๊ธฐ
- ํ๋ก์ ํธ ํ ์คํธ ์ฝ๋๊ฐ ํต๊ณผํ๋์ง ํ์ธํฉ๋๋ค
- ํ์ ์คํฌ๋ฆฝํธ ์ค์ ํ์ผ์ `noImplicitAny: true`๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ๊ฐ๋ฅํ ํ์ ์ ์ ์ฉํ ์ ์๋ ๋ชจ๋ ๊ณณ์ ํ์ ์ ์ ์ฉํฉ๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ [DefinitelyTyped](https://definitelytyped.org/)์์ `@types ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ`๋ฅผ ์ฐพ์ ์ค์นํฉ๋๋ค.
- ๋ง์ฝ, ํ์ ์ ์ ํ๊ธฐ ์ด๋ ค์ด ๊ณณ์ด ์์ผ๋ฉด ๋ช ์์ ์ผ๋ก๋ผ๋ `any`๋ฅผ ์ ์ธํฉ๋๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ํต๊ณผํ๋์ง ํ์ธํฉ๋๋ค.
### ๐ 4. strict ๋ชจ๋ ์ค์ ํ๊ธฐ
- ํ์ ์คํฌ๋ฆฝํธ ์ค์ ํ์ผ์ ์๋ ์ค์ ์ ์ถ๊ฐํ๋ค.
```json
{
"strict": true, //์ด๊ฑธ trueํ๋ฉด ๋ฐ์ ์ต์ ๋ค ๋ชจ๋ true๊ฐ ๋จ
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictBindCallApply": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"alwaysStrict": true
}
```- `any`๋ก ๋์ด ์๋ ํ์ ์ ์ต๋ํ ๋ ์ ์ ํ ํ์ ์ผ๋ก ๋ณํํ๋ค.
- `as`์ ๊ฐ์ ํค์๋๋ฅผ ์ต๋ํ ์ฌ์ฉํ์ง ์๋๋ก ๊ณ ๋ฏผํด์ ๋ณ๊ฒฝํ๋ค.
## ๐ ๋ชจ๋ํ ์งํ์ ์ํ ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ
- [ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ](https://github.com/ssi02014/COVID19-Chart/tree/master/setup)
## ๐ ์ถ๊ฐ ํ์ต ๋ด์ฉ
- ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์`?.`
- ์ต์ ๋ ์ฒด์ด๋์ ์ฌ์ฉํ๋ฉด ํ๋กํผํฐ๊ฐ ์๋ ์ค์ฒฉ ๊ฐ์ฒด๋ฅผ ์๋ฌ ์์ด ์์ ํ๊ฒ ์ ๊ทผํ ์ ์๋ค.
- `?.`์ `?.`์ผ์ชฝ์ ํ๊ฐ ๋์์ด `undefined`๋ `null`์ด๋ฉด ํ๊ฐ๋ฅผ ๋ฉ์ถ๊ณ `undefined`๋ฅผ ๋ฐํํ๋ค.
- ์ฆ, `?.`๋ ์ผ์ชฝ ํ๊ฐ๋์์ ๊ฐ์ด ์์ผ๋ฉด ํ๊ฐ๋ฅผ ๋ฉ์ถ๊ณ `?.` ์ค๋ฅธ์ชฝ์ ์๋ ๋ถ๊ฐ ๋์์ ๋๋ ์ผ์ด๋์ง ์๋๋ค.```ts
recoveredList?.appendChild(li);//์์ ์ฝ๋์ ๋์ผํ ๊ธฐ๋ฅ
if (recoveredList === null || recoveredList === undefined) return;
else recoveredList?.appendChild(li);
```## ๐ ์ฐธ๊ณ ์๋ฃ
- [์กด์ค ํํจ์ค ์ฝ๋ก๋ ํํฉ](https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6)
- [Postman API](https://documenter.getpostman.com/view/10808728/SzS8rjbc?version=latest#27454960-ea1c-4b91-a0b6-0468bb4e6712)
- [Type Vue without Typescript](https://blog.usejournal.com/type-vue-without-typescript-b2b49210f0b)