타입스크립트 Typescript
소개
타입스크립트는 마이크로소프트에서 개발한 정적 타이핑 언어입니다.
자바스크립트 상위 집합(Superset)으로 모든 자바스크립트 코드는 유효한 타입스크립트 코드이기도 합니다.
결국 자바스크립트입니다.
특징
- 정적 타입 언어입니다.
- 컴파일 타임에 타입을 체크합니다.
- 컴파일 시 자바스크립트로 변환됩니다.
- 에디터에서 코드 자동 완성, 실시간 에러 검출이 쉽습니다.
- 제네릭을 지원합니다.
- 확장자는 .ts입니다.
- 선택적 매개변수, 디폴트 매개변수, 나머지 매개변수를 지원합니다
- 데코레이터를 지원합니다
설치
npm install -g typescript
# npm install typescript --save-dev
컴파일
tsc 'ts 파일명'
# tsc ./index.ts
개발 환경
개발 환경은 리눅스에서의 Bun을 추천한다. 따로 컴파일 하지않고 ts파일을 바로 실행시킬 수 있다.
# bun 설치
curl -fsSL https://bun.com/install | bash
bun --version
mkdir test_bun
cd test_bun
# bun template app install
bun init --react=tailwind .
# 개발 모드로 실행. 종료는 ctrl + c
bun run dev
첫 typescript 코드
test.ts 파일을 생성하고 typescript 코드를 작성합니다.
const name = 'your name';
console.log(`hello ${name}~~ 😁`);
터미널에서 실행해 봅니다.
bun test.ts
데이터 타입
- any (동적 타입. 사용하지 않는 것이 typescript의 철학과 맞음)
- number
- string
- boolean
- null
- undefined
- bigint (12345n)
- symbol (Symbol(‘id’))
- object ({}, [], function, 튜)
- union type ( string | undefined )
- never (절대 발생할 수 없는 값)
- unknown (알 수 없는 타입. 타입 체크를 강제함)
- 열거형 (enum) 기본값은 number 1 부터
타입 지정
기본적으로 변수 선언 시 초기화 값을 대입하면 컴파일러가 묵시적으로 타입을 추론합니다.
그 외에는 변수명 뒤에 :타입 을 붙입니다.
let name = 'sixtick'; // string 타입이됨
let age: number = 44; // number 타입이 됨
age = '44'; // 타입이 맞지 않아 error 가 발생합니다.
타입 선언
type 키워드를 써서 타입을 선언합니다.
// union type 은 여러가지 타입을 가질 수 있다
type Num = number | undefined;
let age : Num; // 초기화 안하면 undefined가 됨
age = 44;
키워드
| 키워드 | 설명 |
|---|---|
| type | 타입을 선언합니다. |
| interface | 타입을 선언합니다. |
| class | 클래스를 선언합니다. |
| enum | 열거형을 선언합니다. |
| namespace | 네임스페이스를 선언합니다. |
| private | 속성을 외부에서 접근하지 못하게 함 |
| protected | 속성을 |
| public | 속성을 외부에서 접근할 수 있게 함. 기본속성 |
| readonly | 속성을 읽기 전용으로 지정함 |
| abstract | 추상 클래스를 선언합니다. |
| implements | 인터페이스를 구현합니다. |
| extends | 클래스를 상속합니다. |
| override | 명시적으로 재정의를 표현함 |
| static | 정적 속성 |
| as | 타입 단언을 수행합니다 |
| is | 타입 가드를 수행합니다 |
| keyof | 객체의 속성을 유니온 타입으로 반환합니다 |
| typeof | 객체의 타입을 반환합니다 |
| infer | 조건부 타입 내에서 타입을 추론할때 사용합니다 |
| satisfies | 식이 특정 타입에 부합하는지 검사하면서도 기존 타입을 유지합니다 |
| declare | 컴파일러에게 전역 변수임을 알림 |
| module | 모듈을 선언합니다 |
| asserts | 특정 조건이 참임을 보장하는 단언 함수를 정의할 때 사용합니다 |