본문 바로가기
JavaScript/TypeScript

TypeScript Compiler 탑레벨 프로퍼티 훝어보기

by 봉이로그 2023. 5. 9.
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를 포함하여 사용