-
Notifications
You must be signed in to change notification settings - Fork 0
/
tsconfig.json
175 lines (159 loc) · 8.84 KB
/
tsconfig.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
{
"compilerOptions": {
/*
모듈 해석에 사용할 기준 경로 지정.
절대 경로를 현제 경로로 지정합니다.
*/
"baseUrl": "./",
"paths": {
"@/*": ["src/*"],
"@public": ["public"]
},
/*
Set the JavaScript language version for emitted JavaScript
and include compatible library declarations.
default : "ES3"
컴파일되는 자바스크립트의 버전을 선언합니다.
너무 늦은 버전을 선택하면 코드량가 길어지기 때문에
지원하고자하는 브라우저의 범위를 확인한 뒤 결정해야 합니다.
IE11을 지원하지 않아도 되기 떄문에 ES6 === ES2015를 지정했습니다.
*/
"target": "ES2015",
/*
특정 기능 DOM, gnenerator 등 선택적으로 사용할 수 있습니다.
default로 target에서 제공해주는 라이브러리를 사용합니다.
차후 어떤 기능이 추가될지 모르기 때문에 default를 사용합니다.
배포할 떄 번들링된 파일을 용량이 유의미한 차이를 보인다면 수정 할 예정입니다.
*/
// "lib": ["dom", "dom.iterable", "esnext"],
/*
Allow JavaScript files to be a part of your program.
Use the 'checkJS' option to get errors from these files
js 사용을 허락합니다
*/
"allowJs": true,
/*
.d.ts 파일은 체크를 안합니다.
.d.ts 파일이 없지만 default : false라서 일단 넣었습니다.
"skipLibCheck": true, <= import시 문제가 생기는지 확인
*/
/*
Emit additional JavaScript to ease support for importing CommonJS modules.
This enables 'allowSyntheticDefaultImports' for type compatibility.
CommonJS방식의 파일과 ESM 방식의 파일을 import, export 할때 생기는 문제를 해결해줍니다.
true로 설정 시 두 가지 방식 모두 사용 가능
e.g)
module.export는
import * as commonjs from "common" <= [CommonJS방식의 파일] import 예시
import commonjs from "common" <= [ESM 방식의 파일] import 예시
default가 false이니까 true를 지정하는 것을 추천합니다.
*/
"esModuleInterop": true,
/*
Emit additional JavaScript to ease support for importing CommonJS modules.
This enables 'allowSyntheticDefaultImports' for type compatibility.
CommonJS방식의 파일과 ESM 방식의 파일을 import, export 할때 생기는 문제를 해결해줍니다.
true로 설정 시 두 가지 방식 모두 사용 가능
e.g)
module.export는
import * as commonjs from "common" <= [CommonJS방식의 파일] import 예시
import commonjs from "common" <= [ESM 방식의 파일] import 예시
default가 false이니까 true를 지정하는 것을 추천합니다.
*/
"allowSyntheticDefaultImports": true,
/*
파일명 대소문자 구분을 강제합니다.
default : false입니다.
e.g)
./FileManager.ts 파일을
./fileManager.ts로 지정해여 가져오려고 하면 TypeScript에서 오류가 발생합니다.
*/
"forceConsistentCasingInFileNames": true,
// "allowSyntheticDefaultImports": true,
"noFallthroughCasesInSwitch": true,
/*
모듈 시스템을 지정합니다. import/export를 정하는 방식으로 통합니다.
"CommonJS", "UMD", "AMD", "NodeNext", "ESNext", "ES2015", "ES2022" 등 을 제공합니다.
✅ ESNext: import/export 방식을 사용합니다. ECMA Script 최신 버전방식입니다.
CommonJS : require 방식을 사용합니다.
AMD(Asynchronous Module Definition) : import/export + require을 혼합하여 사용합니다.
define같은 기능도 있습니다.
*/
"module": "ESNext",
/*
Specify how TypeScript looks up a file from a given module specifier.
모듈의 위치를 찾아가는데의 방식(전략)을 지정합니다.
** default : Classic
module 플래그가 CommonJS인 경우에는 default가 node 입니다.
-
node
CommonJS방식을 사용합니다.
index.html 생략하는 방식으로 제일 융통성있는 방식입니다. 위 예시의 순서대로 찾습니다.
-
classic
1.6 Ts이전 호환성을 위해 남겨놓은 방식, 최신코드는 사용하지 않습니다.
-
node16 (nodeNext)
SSR 서버를 만들 떄 CJS, EMS를 같이 사용하게 되는데 node16 또는 nodeNext로 설정하면
type="module"일 경우 EMS, type="commonjs"일 경우
CJS로 .cts는 CJS, .mts는 EMS로 해석해줍니다.
export필드,subpath exports, conditaional exports등 다양한 방법과 같이 사용할 수 있습니다.
프론트 웹앱을 만든다면 node, 서버를 만든다면 nodeNext || node 16이 좋을 것 같습니다.
https://www.typescriptlang.org/docs/handbook/module-resolution.html
*/
"moduleResolution": "node",
/*
Enable importing .json files.
import settings from "./settings.json"; 이게 가능해집니다. 타입 검사까지도요
settings.debug === true;
settings.dry === 2;
*/
"resolveJsonModule": true,
/*
Ensure that each file can be safely transpiled without relying on other imports.
각각의 파일을 다른 모듈로 만듭니다.
** default : false
✅ true시 모든 파일을 모듈로 컴파일 함. import, export 키워드 필수.
빈 파일도 export {} 이렇게 작성해줘야합니다.
프레임워크를 사용하고 있다면 true로 하고, 복합 프로젝트나 nodejs환경에서 사용하고 있다면 false로 하는게 좋을 것 같습니다.
*/
"isolatedModules": true,
/*
Disable emitting files from a compilation.
타입 에러가 있으면, 컴파일시 파일을 생성하지 않습니다.
*/
"noEmit": true,
/*
Specify what JSX code is generated.
https://www.typescriptlang.org/ko/docs/handbook/jsx.html
어떤 jsx 코드를 만들었는지 ts컴파일러에게 알려줍니다.
이 모드는 출력 단계(컴파일 단계)에만 영향을 미치며 타입 검사에는 영향을 미치지 않습니다.
*/
"jsx": "react-jsx",
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
/*
true시 위 옵션이 암시적으로 true가 됩니다.
간단하게 설명하면 true시 any, null, this 등 타입을 불분명하게 하는 모든 것을 체크합니다.
*/
"strict": true
},
//컴파일할 파일 경로 목록
"include": ["src", "src/custom.d.ts"]
}