Skip to content

Commit 56c9ca6

Browse files
committed
readme first draft
1 parent 1442383 commit 56c9ca6

File tree

1 file changed

+167
-1
lines changed

1 file changed

+167
-1
lines changed

README.md

Lines changed: 167 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,167 @@
1-
# learn-typescript
1+
# learn-typescript
2+
3+
## 진행 순서
4+
5+
1. master - 앱 개발
6+
2. 1_why-ts - 왜 타입스크립트를 쓰면 좋은가?
7+
8+
- 유지 보수를 위한 문서화와 JSDoc
9+
- `$` 함수에 JSDoc 하면서 좋아지는 VSCode 인텔리센스 확인 및 소개
10+
- `handleListClick``event`인자의 변수 타이핑 후 좋아지는점 소개
11+
- `@typedef`를 이용하여 `setDeathList` 함수, `setTotalDeathsByCountry`의 인자 타이핑 하는 방법 소개
12+
- `@typedef`를 이용한 API 함수의 타이핑 방법 소개
13+
- `@ts-check` 적용
14+
15+
- 이전 작업으로 인해 타입 오류 나는 부분 확인 및 설명
16+
- 아래 코드 추가 후 설명
17+
18+
```js
19+
// @ts-check
20+
let a = 10;
21+
a = 'hi';
22+
```
23+
24+
- `TSLint` 플러그인 등
25+
26+
3. 2_ts-setup - 타입스크립트 환경 설정
27+
28+
- NPM 초기화
29+
- Typescript 설치
30+
- 타입스크립트 설정 파일 생성 후 아래 내용 추가. [참고](https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html)
31+
32+
```json
33+
{
34+
"compilerOptions": {
35+
"outDir": "./built",
36+
"allowJs": true,
37+
"target": "es5",
38+
"moduleResolution": "node"
39+
},
40+
"include": ["./src/**/*"]
41+
}
42+
```
43+
44+
- js 파일을 `src` 폴더로 이동 후 ts 파일로 변환
45+
- `package.json` 파일에 아래 빌드 명령어 추가 후 빌드
46+
47+
```json
48+
"scripts": {
49+
"build": "tsc"
50+
}
51+
```
52+
53+
- 빌드 명령어 실행 후 결과물 확인. 콘솔에 오류는 뜨나 빌드는 완료됨
54+
- 현재 나오는 오류는 `axios`, `Chart` 관련 라이브러리 오류이므로 해결하는 방법은 강의 후반부의 "ts에 외부 라이브러리 사용하는 방법(타입 선언 파일)"에서 다루는 것으로 안내
55+
56+
4. 3_explicit-any - 명시적인 타입 선언하기. any라도 좋다..!
57+
58+
- 타입스크립트 설정 파일에 아래 내용을 추가
59+
60+
```json
61+
{
62+
"compilerOptions": {
63+
// ...
64+
"noImplicitAny": true
65+
}
66+
}
67+
```
68+
69+
- 위 내용 추가 후 빌드 했을 때 이전 빌드에서 나오지 않았던 타입 에러들을 안내 후 몇 개 같이 살펴보기
70+
- 타입스크립트 빌드 명령어를 쳤을 때 에러를 확인하는 것보다 파일을 열었을 때 코드에서 바로 에러를 확인할 수 있게 ESLint with Typescript 환경 설정
71+
72+
- ESLint 라이브러리와 린트 규칙 추가 설정
73+
74+
```bash
75+
npm i -D @babel/core @babel/preset-env @babel/preset-typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint prettier eslint-plugin-prettier
76+
```
77+
78+
- ESLint 설정 파일 추가
79+
80+
```js
81+
// .eslintrc.js
82+
module.exports = {
83+
root: true,
84+
env: {
85+
browser: true,
86+
node: true,
87+
},
88+
extends: [
89+
'eslint:recommended',
90+
'plugin:@typescript-eslint/eslint-recommended',
91+
'plugin:@typescript-eslint/recommended',
92+
],
93+
plugins: ['prettier', '@typescript-eslint'],
94+
rules: {
95+
'prettier/prettier': [
96+
'error',
97+
{
98+
singleQuote: true,
99+
semi: true,
100+
useTabs: false,
101+
tabWidth: 2,
102+
printWidth: 80,
103+
bracketSpacing: true,
104+
arrowParens: 'avoid',
105+
},
106+
],
107+
'@typescript-eslint/no-explicit-any': 'off',
108+
},
109+
parserOptions: {
110+
parser: '@typescript-eslint/parser',
111+
},
112+
};
113+
```
114+
115+
- ESLint 이그노어 파일 추가
116+
117+
```
118+
// .eslintignore
119+
node_modules
120+
```
121+
122+
- VSCode의 Settings.json 파일에 아래 내용 추가
123+
124+
```json
125+
"eslint.workingDirectories": [{"mode": "auto"}],
126+
```
127+
128+
- ESLint 오류 제거 (여기서 포인트는 바로 모르겠으면 다 any 아니면 string 등 최대한 단순한 타입으로 정리)
129+
130+
- ESLint 적용 후 함수 반환 타입에 명시적으로 `any` 선언 및 함수 선언 순서 정리 위주로 정리
131+
- 함수 파라미터 타입 정의 ex) string, any, number 등
132+
- axios 라이브러리 설치 및 `@types` 라이브러리 설명 및 안내. 아래 내용은 axios 라이브러리 인식을 위해 필요
133+
134+
```json
135+
"compilerOptions": {
136+
"moduleResolution": "node",
137+
}
138+
```
139+
140+
- Chart 라이브러리는 index.d.ts에 한번 직접 정의해보자~
141+
142+
- 일단 chart.jsNPM으로 설치해야함 `npm i chart.js`
143+
- `tsconfig`에 아래 추가
144+
145+
```json
146+
"compilerOptions": {
147+
"typeRoots": [ "./types", "./node_modules/@types"]
148+
},
149+
"exclude": ["node_modules", "types"]
150+
```
151+
152+
- 루트 폴더에 `types/chart.js` 만든 후 `index.d.ts`에 아래 내용 추가
153+
154+
```js
155+
declare module 'chart.js';
156+
```
157+
158+
- `app.ts``import Chart from 'chart.js'` 구문 추가
159+
- Promise, DOM 관련 빌드 에러 확인 후 에러 내용 순차적으로 추가
160+
161+
```json
162+
"compilerOptions": {
163+
"lib": ["es2015", "dom", "dom.iterable"]
164+
}
165+
```
166+
167+
- 빌드 확인

0 commit comments

Comments
 (0)