일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 레인지 슬라이더
- 모듈 배포하기
- 개인 프로젝트
- toast
- html
- 자바
- 코드스쿼드
- 함수
- Hello Coding HTML5+CSS3
- 우아한테크캠프 4기
- express
- 주간 회고
- 토이프로젝트
- 토이 프로젝트
- ES6
- 우아한테크코스
- AWS
- 인사이드 자바스크립트
- 우아한테크캠프
- 우아한형제들
- npm
- CSS
- 회고의 회고
- 리액트
- 자바스크립트 객체
- 알고리즘
- 자바스크립트
- 네이버 테크 콘서트
- 러닝 자바스크립트
- 프로그래머스
- Today
- Total
블로그
TypeScript - 1 환경설정, 기본타입 본문
history
자바스크립트의 태생적 한계를 극복하기 위해 마이크로소프트에서 2012년에 발표했다.
자바스크립트의 대체 언어 중 하나로 정적 타이핑을 지원하며, ES2015의 문법을 기본적으로 지원한다.
정적 타입
타입스크립트는 자바스크립트와는 다르게 정적 타입을 제공한다.
이를 통해 개발자가 의도한 대로 동작하는 코드를 구현하기 수월해진다.
타입스크립트의 변수 선언은 아래와 같다.
// 키워드 변수명: 타입 = 값;
const age: number = 10;
const name: string = "abc";
// 타입과 맞지 않을 경우 에러 발생
const foo: string = 7; // Type 'number' is not assignable to type 'string'.
물론 타입을 생략해도 동작하며, 타입스크립트는 이 때, 암묵적으로 타입을 변수에 지정한다.
let foo = 3; // let foo: number = 3;
단, 암묵적으로 할당하는 방법은 변수의 선언과 할당을 동시에 해야 유효하며,
선언과 할당을 나눠서 진행하면 다른 타입으로 재할당 하더라도 에러가 발생하지 않게 된다.
let foo; // type any
foo = 3;
foo = "foo";
환경 설정
먼저 npm에서 typescript 모듈을 전역에 설치한다.
npm install -g typescript
ts파일을 만들고 타입스크립트 문법에 맞는 코드를 작성한다.
const foo: number = null ?? 3;
해당 파일을 tsc 파일경로 -t 버전
명령어를 통해 컴파일한다.
이 때, 경로에 확장자는 생략할 수 있으며, 버전은 ES3 ~ ES2020 와 ESNext를 지원한다.
버전을 생략하게 되면 ES3로 컴파일한다.
// ES3 컴파일
var foo = null !== null && null !== void 0 ? null : 3;
// ES2016 컴파일
const foo = null !== null && null !== void 0 ? null : 3; // const, let은 ES2015부터 표준.
// ES2020 컴파일
const foo = null ?? 3; // 널병합 연산자는 2020부터 표준.
tsconfig.json
타입스크립트는 config를 통한 옵션 설정을 지원한다.
tsc --init
tsconfig에서 설정한 옵션대로 컴파일하기 위해서는 tsc 뒤에 파일 경로를 입력하지 않아야 한다.
만약 경로를 입력한다면 tsconfig는 무시된다.
tsc tmp // x
tsc
tsc만 입력하면 현재 프로젝트 폴더 영역 내부의 모든 .ts 파일이 컴파일 된다.
tsconfig.json에서 사용할 수 있는 옵션 중 흥미가 생기는 것들은 아래와 같다.
- target
"target": "ES3" // default ES3, ~ ES2020, ESNext 지원.
// 소문자도 가능하다.
"target": "es2015"
- allowJs
"allowJs": false // default false, true 설정 시 js파일도 컴파일한다.
// tmp.js
const foo = "foo";
// tmp.js ES3
var foo = "foo";
- checkJs
"checkJs": false // default false, true 설정 시 js파일의 컴파일에 발생하는 에러를 출력한다.
// allowJs와 함께 사용한다!
// tmp.js
const foo = "foo";
const foo = 3;
// checkJs: false
var foo = "foo";
var foo = 3;
// checkJs: true
error TS2451: Cannot redeclare block-scoped variable 'foo'.
- outDir, outFile
"outFile": "경로/파일명", // 단일 파일에 컴파일한다.
"outDir": "경로", // 지정한 디렉토리에 컴파일한다.
- watch
"watch": true // true 설정 시 파일의 수정을 감시하며, 자동으로 컴파일!
예시
{
"compilerOptions": {
"target": "ES3",
"allowJs": true,
"checkJs": true,
"outDir": './dist',
"watch": true
}
}
기본타입
타입스크립트의 기본 타입은 아래와 같다.
const isDone: boolean = true | flase;
const decimal: number = Number;
const string: string = String;
const listA: type[] = [type, type, ..., type];
const listB: Array<type> = [type, type, ..., type];
const tuple: [string, number] = [String, Number];
// 자바처럼 열거형 사용 가능!
enum Addr {ABC, DEF}; // { '0': 'ABC', '1': 'DEF', ABC: 0, DEF: 1 }
// 모든 타입을 허용
const Any: any;
// 자바의 void처럼 함수에서 반환 값이 없을 때, 사용
function Void(): void { connsole.log('void') }
const Undefined: undefined = undefined;
const Null: null = null;
// 발생할 수 없는 타입을 의미한다. never를 반환하는 함수는 함수의 마지막에 도달할 수 없음.
function Never(): never { while (true) {} }
const Object: object;
'자바스크립트' 카테고리의 다른 글
JWT (0) | 2021.09.04 |
---|---|
웹팩 기초, 로더 (0) | 2021.07.15 |
this (0) | 2021.03.20 |
[메모 트리 프로젝트] 4. UI 구현 - 1 (0) | 2021.03.18 |
Express 메모 (cors, ESM, path, ejs) (0) | 2021.03.18 |