npm init -y
npm i typescript -D
npx tsc --init
타입스크립트 생성
complieOnSave
- true / false (default false)
extends
- 상속받아올 부모 패스 설정
// base.json
{
"compilerOptions": {
"strict": true
}
}
// tsconfig.json
{
"extends": "./base.json",
...
}
// true일 경우 compiler error 발생
const a: number = undefined; (X)
const a: number = 123; (O)
{
"extends": "@tsconfig/deno/tsconfig.json",
...
}
files
- 상대 or 절대경로의 리스트 배열
- exclude 보다 상위
include
- glob 패턴 / LIKE (.gitignore)
- exclude보다 하위
exclude
- 미설정 시 node_modules, bower_components, jspm_packages, <outDir>를 default로 제외
- <outDir>은 항상 제외 (include에 있어도)
@types
내장 type definition 시스템
- node_modules@types 라는 모든 경로를 찾아서 사용
typeRoots
- 타입유추 폴더 경로 설정
- 배열안에 들어있는 경로들 아래에서 가져옴
types
- 배열안의 모듈 혹은, .node_modules/@types/ 안의 모듈 이름에서 찾음
- [] 빈 배열 사용시 시스템을 사용하지 않음
typeRoots와 types를 동시에 사용불가
target
- ts compiler 시 생성되는 js 파일의 자바스크립트 버전을 선언
{
"compilerOptions":{
...
"target": "es6"
}
}
npx tsc
// test.ts
const test = ()=> {}
// if target es6, etc...
// test.js
const test = ()=> {}
// if target es5
// test.js
var test = function() {}
lib
- 기본 type definition 라이브러리를 어떤 것을 사용할지
- lib를 지정하지 않을 경우
- target에 따라 자동지정
- target 이 es5 이면 디폴트로 dom, es5, scipthost 사용
- target 이 es6 이면, 디폴트로 dom, es6, dom.iterable, scripthost 사용
- lib를 지정하면 lib 배열안에 있는 라이브러리를 사용
- [] 빈 배열이 정의 될 경우 type definition 관련 에러발생
outDir
- 모듈이 common.js 나 es6로는 하나의 파일로 만들어주지 않음
- require.js 나 amd를 이용해 만들경우 하나의 파일로 만들어줌
- rootDir에 따라서 tsc 사용시 결과물이 달라진다.
- rootDir이 없을경우 가장 최상단의 ts를 컴파일한다.
rootDir
- tsc 시 rootDir 디렉토리를 설정한다.
strict
--noImplicitAny
- 타입스크립트가 추론을 실패한경우, any가 맞다면 any 로 지정
- 명시적이지 않게 any 타입을 사용하여 표현식과 선언에 사용하면 에러를 발생
--noImplicitThis
- 명시적이지 않게 any 타입을 사용하여, this 표현식에 사용하면 에러를 발생
--strictNullChecks
- 설정하지 않을경우, 모든타입에 null과 undefined를 포함하여 사용