컴파일러시 적용되는 세부사항을 직접 설정함으로써...
tsc --init
→ tsconfig.json
파일 생성됨
tsc src/index.ts
와 같이 파일의 경로를 일일이 찾아서 컴파일 해주기에 무리가 생김 {
"include": ["src"] // src경로 아래 있는 모든 파일
}
→ tsc
명령어만 입력하면 해당 위치의 모든 ts파일을 컴파일 해줌
"target": "ES5"
설정 (ES5 문법: 함수표현식){
"compilerOptions": { // 상세옵션설정
"target": "ES5"
},
}
"target": "ESNext"
설정 (ES6 문법: 함수표현식){
"compilerOptions": {
"target": "ESNext" // js최신버전
},
}
모듈시스템
ES 모듈 시스템 (ESM)
- 형태
import from '...' export default ~
CommonJS (CJS)
- 형태 (예전형태)
const a = require('...') module.exports = ~
"module": "CommonJS"
설정{
"compilerOptions": {
"module": "CommonJS"
},
}
"module": "ESNext"
설정 (ES 모듈 시스템){
"compilerOptions": {
"module": "ESNext"
},
}
{
"compilerOptions": {
"outDir": "dist"
},
}
{
"compilerOptions": {
"strict": true
},
}
매개변수를 전달할 때
"strict": true
→ 매개변수의 타입이 추론되지 않기 때문에 오류 발생"strict": false
JS 프로젝트를 TS로 마이그레이션 하는 경우 대참사(?)를 막기위해 strict를 false 로 설정하기도 함
const a
를 선언// index.ts
const a = 1;
// hello.ts
const a = 1;
export{}
→ 독립된 공간으로 취급됨// index.ts
const a = 1;
export {};
{
"compilerOptions": {
"moduleDetection": "force"
},
}
"module": "ESNext"
경우"module": "CommonJS"
경우※ 참고 : tsconfig.json 수정 후 적용안될시 ※
ctrl
+shift
+p
- restart검색
ts-node src/index.ts
실행
오류 발생 → es-module 로드 불가
package.json
의 "type": "module"
추가오류 발생 → ts-node가 es-module 시스템 해석 불가 (ts-node는 기본적으로 common.js를 사용)
tsconfig.json
에 다음 옵션 추가 → ts-node가 es-module 시스템으로 동작
{
"ts-node": {
"esm": true
},
tsc
명령을 내리고 다음 오류를 마주하였다.혹은 다음 방법으로도 해결이 가능했다.
rm -rf node_modules