• 기본적으로 JavaScript와 거의 동일

Boolean

let isDone: boolean = false;

Number

  • 모든 숫자는 부동 소수값.
  • 2, 8, 10, 16진수 지원
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

String

  • "와 '로 감쌀 수 잇음.
  • 또한 템플릿 문자열(`)을 사용하면 여러줄에 걸쳐 문자열 작성 가능.
  • ${ } 처럼 표현식 표현 가능.
let color: string = "blue";
color = 'red';
let sentence: string = "Hello, my name is " + fullName + ".\n\n" +
    "I'll be " + (age + 1) + " years old next month.";

Array

  • 두 가지 방법으로 사용 가능.
  • 첫번째 방법은 : elemType 뒤에 []를 붙이는 것:
let list: number[] = [1, 2, 3];
  • 두 번째 방법은 Array<elemType> 처럼 제네릭 배열 타입을 쓰는 것:
let list: Array<number> = [1, 2, 3];

Tuple

  • 요소의 타입과 개수가 고정된 배열.
  • elemType이 모두 같을 필요는 없음.
// 튜플 타입으로 선언
let x: [string, number];
// 초기화
x = ["hello", 10]; // 성공
// 잘못된 초기화
x = [10, "hello"]; // 오류
console.log(x[0].substring(1)); // 성공
console.log(x[1].substring(1)); // 오류, 'number'에는 'substring' 이 없습니다.

Enum

  • 0부터 시작해 멤버들의 번호를 매겨주는 집합 데이터형
enum Color {Red, Green, Blue}
let c: Color = Color.Green; // c === 1
  • 시작번호를 바꾸거나 수동으로 설정 가능.
enum Color {Red = 1, Green, Blue}
enum Color {Red = 1, Green = 2, Blue = 4}
  • 매겨진 값(Number)을 사용해 enum 멤버의 이름(String)을 알아낼 수 있다!
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName); // 값이 2인 'Green'이 출력됨

Any

  • 알지 못하는 타입을 표현할 경우 사용. 기존 Javascript와 닮았다.
  • 타입 검사를 하지 않고 컴파일 시간을 단축시킴.
  • '어떤 타입도 될 수 있다'
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 성공, 분명히 부울입니다.

Void

  • '어떤 타입도 될 수 없다'
  • 함수에서 반환값을 void로 쓸 때 사용.
function warnUser(): void {
    console.log("This is my warning message");
}
let unusable: void = undefined;
unusable = null; // 성공  `--strictNullChecks` 을 사용하지 않을때만

Null and Undefined

  • undefinednull 둘 다 각각 자신의 타입 이름으로 undefined , null를 사용
  • void처럼 그 자체로 유용한 경우는 거의 없음
// 이 밖에 이 변수들에 할당할 수 있는 값이 없습니다!
let u: undefined = undefined;
let n: null = null;
  • 기본적으로 null 과 undefined는 다른 모든 타입의 하위 타입임
  • 이건 null과 undefined를 number 같은 타입에 할당할 수 있다는 것을 의미함
  • 하지만 --strictNullChecks를 사용하면, null과 undefined는 오직 any와 각자 자신들 타입에만 할당 가능하게 됨

Never

  • 절대 발생할 수 없는 타입을 나타냄
  • 주로 함수 화살표 함수 표현식 등에서 항상 오류를 발생시키거나 절대 반환하지 않아야 할 때(함수가 끝나서는 안될 때) 사용됨
  • never 타입은 모든 타입에 할당 가능한 하위 타입임
  • 하지만 어떤 타입도 never에 할당할 수 없고 / never의 하위 타입이 아님
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다 (이 함수가 끝나서는 안된다는 뜻)
function error(message: string): never {
    throw new Error(message);
}

function infiniteLoop(): never {
    while (true) {
    }
}

// 반환 타입이 never로 추론된다.
function fail() {
    return error("Something failed");
}

Object

  • 원시타입이 아닌 타입
declare function create(o: object | null): void;

create({ prop: 0 }); // 성공
create(null); // 성공

create(42); // 오류
create("string"); // 오류
create(false); // 오류
create(undefined); // 오류

Type assertions

  • 컴파일러에게 "날 믿어, 난 내가 뭘 하고 있는지 알아" 라고 단언해주는 것
  • 런타임에 영향을 미치지 않으며 온전히 컴파일러만 이를 사용함
  • angle-bracket 문법:
let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;
  • as 문법:
let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

+ Recent posts