타입스크립트 코리아 이웅재님의 강의 참조
2017 - 10 - 28 (토)
TypeScript란?
타입 스크립트 - 하나의 프로그래밍 언어이다. 자바스크립트와 호환된다
전통적인 컴파일 언어와 조금 다르다. 트랜스파일 언어라고도한다.
컴파일러가 필요하다.
정적타입 언어 ?
-미리 타입을 지정해놈
동적 타입 언어 ?
-미리 정해놓은 타입이 없다.
전통적인 컴파일언어
- c , c++ , java c# 이 대표적
타입스크립트가 컴파일러에의해 자바스크립트 코드로 바뀐다.
필요한 설치 파일
노드 js 다운로드 (자바스크립트를 해석하고 OS레벨에서의 API를 제공하는 서버측면의 자바스크립트 런타임 환경)
https://nodejs.org
nvm 다운로드 ( nvm 은 node.js 버전을 관리해준다. )
https://github.com/coreybutler/nvm-windows
사용할 editor : visul studio code
터미널을 위해 기존에 사용하던 git bash사용
설치가 완료되었으면 기본적인 작업이 마무리 되었다.
개발환경 구축
1 . 프로젝트 폴더를 하나 만든다.
2 . 프로젝트 폴더에서 init : $ npm init -y
3 . typescript 설치 : $ npm i typescript
4 . 컴파일 테스트
class Test {
public static getTest(): string {
return "test";
}
}
Test.getTest();
위처럼 간단하게 test.ts 라는 명칭의 파일을 하나 생성한다.
아래의 package.json 파일에서 transpile 을 tsc로 두고
git bash에서 $ ./node_modules/.bin/tsc test.ts 을 입력하면 컴파일이되어 test.js 가 생성된다.
{
"name": "tsproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"transpile" : "tsc",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
5 . node 버전을 6.10.3으로 맞추고자한다. : $ nvm install 6.10.3
6 . 해당 버전을 사용하기 : $ nvm use 6.10.3
7 . node 버전 확인 : $ node -v
8 . typescript 설치 : $ npm i typescript
컴파일러 예제
컴파일 방법 1
npm 스크립트로 하는 경우 - package.json 안에 scripts의 transpile 값을 tsc로 설정
터미널 : $ ./node_modules/.bin/tsc ts파일명
컴파일 방법 2
package.json 안에 scripts 의 transpile 값을 tsc ts파일 명 으로 설정
터미널 : $ npm run transpile
watch mode로 컴파일하기
package.json 에 devwatch 라는 속성을 추가한후 값을 tsc -w로 준다.
터미널 : npm run devwatch ( watch 모드가 실행된다.)
터미널 : node test.ts
tslint 플러그인
visual studio 에서 에러를 잡기위해서 플러그인을 설치한다.
- marketplace 에서 ext install tslint를 검색하여 IDE에 적용한다(Visual studio code)
컴파일러 옵션
json.schemastore.org/tsconfig 에서 옵션을 읽어보고 tsconfig.json에 추가하면된다.
compileOnsave - true/false (default가 false)
compileOptions
셋다 설정이 없으면 ts파일을 전부다 컴파일한다.
files
include - 와일드카드 (\*) 사용시 .ts / .tsx / .d ts 만 include
exclude - glob 패턴이다. (gitignore 처럼) 설정을 안할 경우 (node_modules, bower_components, jspm_packages,
최상위 프로퍼티
compileOptions : type
types 와 typeRoots
@types 이란?
typeScript 2.0 부터 사용가능해진 내장 type definition 시스템
아무설정을 안할 경우 node_modules/@types 라는 모든 경로를 찾아서 사용한다.
typeRoots 를 사용할 경우에는 배열 안에 들어있는 경로들 아래서만 가져온다.
types 를 사용하면 배열안의 모듈 혹은 ./node_modules/@types/ 안에있는 모듈 이름에서 찾아온다.
[]빈 배열을 넣는다는 건 이 시스템을 이용하지 않겠다는 뜻이다.
typeRoots 와 types 를 같이사용하지 않는다.
typing 관련 깃허브
https://github.com/typings/typings
target 과 lib
target
-빌드의 결과물을 어떤 버전으로 관리할지
- 지정을 안할경우 디폴트 es3
,br>
lib
- 기본type definition 라이브러리를 어떤 것을 사용할 것인지.
- lib를 지정하지 않을 때
target이 'es3' 이고 디폴트로 lib.d ts 를 사용한다.
target이 'es5' 이면 디폴트로 dom, es5, scripthost를 사용한다
target이 ex6 이면 디폴트로 dom, es6, dom.iterable, scripthost를 사용한다.
lib를 지정하면 그 lib배열로만 라이브러리를 사용한다.
빈 [] => no definition found 발생
outdir과 outfiledir
module
- 컴파일 된 모듈의 결과물을 어떤 모듈 시스템으로 할지를 결정한다.
- target 이 es6이면 es6이 디폴트이다.
- target이 es6이 아니면 common.js 가 디폴트이다.
- amd 나 system 와 사용하려면 outFile 이 지정되어야한다.
- es6 이나 es2015 를 사용하기 위해 , target 이 es5이하여야한다.
moduleResolution
-ts 소스에서 모듈을 사용하는 방식을 지정해야 한다.
-classic 아니면 node 이다.
- commonJS 일 때만 NODE라고 생각하면 된다.
paths 와 basUrl
- 상대 경로 방식이 아닌 baseUrl 로 꼭지점과 paths 안의 키/벨류 모듈을 가져가는 방식
baseUrl - 가져올때 쓴다.
rootDirs
- 배열 안에서 상대 경로를 찾는 방식
</p>