데이터 타입을 동적으로 할당하는 JavaScript와 다르게 TypeScript는 선언 시 데이터의 타입을 지정해야한다. 지원하는 데이터 타입은 Javascript와 거의 동일하다.
Boolean
let isDone: boolean = false;
Number
부동 소수 값. 16진수, 10진수 리터럴에 더불어, ECMAScript 2015에 소개된 2진수, 8진수 리터럴도 지원한다.
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
String
JavaScript의 템플릿 문자열도 지원한다.
let name: string = 'kim';
name = "kim";
Array
아래 두가지 선언 방식 모두 사용할 수 있다.
let arr1: number[] = [1, 2, 3];
let arr2: Array<number> = [1, 2, 3];
Tuple
요소의 타입과 개수가 고정된 배열을 표현할 때 사용한다.
let tpl: [string, number, number];
tpl = ["kim", 1, 2]; // 성공
tpl = [1, 2, "kim"]; // 오류
console.log(tpl[3]); // 오류
Enum
enum Stage {Start, Vote, End}
let eStageStatus: Stage = Stage.Start;
eStageStatus = Stage[1]; // Stage[1]의 이름인 'Vote'가 대입된다.
각 요소는 숫자 0부터 순서대로 매치되나 아래와 같이 번호를 수동으로 매치할 수 있다.
enum Stage {Start=1, Vote, End} // 1부터 순서대로 매치
enum Color {Red=1, Blue=3, Green=6}
Any
타입 검사를 생략하는 타입으로 타입이 명확하지 않을 때 사용한다.
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 성공
Void
타입이 존재하지 않음을 나타낼 때 사용하며 null과 undefined만 할당할 수 있다. 일반적으로 Return이 없는 함수 선언에 사용된다.
function func(): void {
console.log("Hello World!");
}
Null and Undefined
JavaScript에서의 사용과 같다. 기본적으로 모든 타입에도 대입될 수 있으나 --strictNullChecks
를 사용한 경우 any와 각자의 타입(null
, undefined
)에서만 할당이 가능하다. ※예외, undefined는 void에도 할당이 가능하다.
Never
절대 발생할 수 없는 타입을 나타낸다. 모든 타입에 할당이 가능한 하위 타입이다. 함수 표현식에서 항상 오류를 발생시키거나, 절대 반환하지 않는 반환타입으로 사용된다.
(void와 유사하나 조금 더 강제성이 있다는 의미인 것 같다.)
Object
원시타입을 제외한 나머지 타입을 말한다.
function func(obj: object): void;
func({ prop: 0 }); // 성공
func(42); // 오류
func("string"); // 오류
func(false); // 오류
func(undefined); // 오류
|
연산자를 사용하여 여러 데이터 타입 중 하나를 갖는 데이터 타입을 표현한다.
let nickname: string|number;
형변환과 유사한 기능이지만 특별히 검사를 하거나 데이터를 재구성하지 않는다.
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
TypeScript를 JSX와 함께 사용할 때는, as-스타일의 단언만 허용된다.📌 출처