TypeScript의 등장 배경
- 클라이언트 측 언어였던 JavaScript가 Node.js의 개발로 인해 서버측 기술로도 활용되며, 코드가 점점 복잡해지게 됨.
- 코드를 유지 관리 및 재사용하기 어려워짐
- TypeScript = JavaScript + Type
Type 이란?
- value나 property 또는 함수를 추론할 수 있는 방법
- JS의 기본 제공 유형을 상속함 (원시 타입, 객체 타입)
추가 제공 Type
- Tuple
- Enum
- Any
- Void
- Never
- Union
let code: (string | number);
code = '123'; // OK
code = 123; // OK
enum PrintMedia {
Newspaper = 1,
Newsletter = 50,
Magazine // 51
}
let mediaType = PrintMedia.Magazine // 51
const json: string = '{"x":4, "y":6}'
const cordinates = JSON.parse(json);
console.log(coordinates);
ts 파일을 html 파일 내에서 사용 불가하므로, 컴파일해서 Js 파일로 변환 후에 사용해줘야 함.
$ npm i -g typescript
$ tsc main.ts
컴파일 시 기본적으로 es3 문법을 이용해서 컴파일됨.
설정을 통해 es6를 사용해서 컴파일할 수 있음.
{
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build/js"
}
}
{
"compilerOptions": {
"target": "ES2015"
}
}
./src/**/*.ts
에서만 찾도록{
"compilerOptions": {
"rootDir": "./src",
"outDir": "./build/js"
},
"include": {
"./src/**/*.ts", // 이 경로에서만 ts 파일을 찾게 됨
}
}
{
"compilerOptions": {
"noEmitOnError": true
}
}
-> 에러 발생 시 컴파일하지 않음
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "Node",
"esModuleInterop": true,
}
}
참고 -
module
과target
- target: 해당 TS파일을 어떤 JS 버전으로 변환할지?
- ES2015 (기본값)
- ES6 ~ ESNext
- module: js파일 간 import시 어떤 문법 사용?
- commonjs: require
- ESNext: import
{
"compilerOptions": {
"lib": ["ESNext", "DOM"],
}
}
{
"compilerOptions": {
"strict": true,
}
}
{
"compilerOptions": {
"target": "ES2015",
"rootDir": "./src",
"outDir": "./build/js",
"noEmitOnError": true,
"module": "ESNext",
"moduleResolution": "Node",
"esModuleInterop": true,
"lib": ["ESNext", "DOM"],
"strict": true
},
"include": ["./src/**/*.ts"]
}