TypeScript Type

TypeScript는 boolean, number, string, array, tuple, enum, any, void, null, undefined type을 제공합니다.

boolean

boolean type은 true와 false, 둘 중에 하나를 갖는 type입니다.

1
let isDone: boolean = true;

number

number type은 부동소수점 숫자를 갖는 type입니다.
TypeScript에서 모든 숫자는 자바스크립트와 같이 부동소수점 숫자입니다.

1
2
3
4
5
let decimal: number = 6; // 10진수
let hex: number = 0xf00d; // 16진수
let binary: number = 0b1010; // 2진수
let octal: number = 0o744; // 8진수
let float: number = 3.141592; // 부동소수점

string

string type은 0개 이상의 문자의 나열을 갖는 type입니다.
string 리터럴(literal)은 큰 따옴표(“) 또는 작은 따옴표(‘)를 이용해서 표현합니다.

1
2
let hello: string = "world";
let animal: string = 'cat';

template string은 여러 라인에 걸칠 수 있고 식(expression)을 넣을 수 있습니다.
template string은 backtick/backquote (`) 문자로 둘러 싸고 내장되는 식은 ${ expr }의 형태입니다.

1
2
3
4
5
let fullName: string = `Bob Bobbington`;
let age: number = 37;
let setence: string =
`Hello, my name is ${ fullName }.
I'll be ${ age + 1 } years old next month.`

array

배열은 두 가지 방법이 있습니다.
첫번째는 요소의 type과 []를 사용하는 방법입니다.

1
let list: number[] = [1, 2, 3];

두번째는 generic array type, Array을 사용하는 방법입니다.

1
let list: Array<number> = [1, 2, 3];

tuple

tuple는 요소(element)의 type을 지정하는 배열입니다.

1
2
3
let x: [string, number] = ["hello", 1];
x = [1, "hello"]; // 에러
x[0] = 1; // 에러

type을 지정하지 않은 index 요소의 type은 union type이 됩니다.

1
2
x[2] = "world"; // x[3]은 union type 'string | number'입니다.
x[3] = true; // 에러, boolean은 string | number이 아닙니다.

enum

enum은 미리 정해진 상수(constant)의 집합인 type 입니다.

1
2
enum Color {Red, Green, Blue};
let c: Color = Color.Green;

enum은 숫자가 0부터 시작하지만 이것을 바꿀 수 있습니다.

1
2
enum Color {Red = 1, Green, Blue};
let c: Color = Color.Green;

또는 모든 값을 정할 수 있습니다.

1
2
enum Color {Red = 1, Green = 2, Blue = 4};
let c: Color = Color.Green;

값으로 부터 상수의 이름을 얻을 수 있습니다.

1
2
3
enum Color {Red = 1, Green, Blue};
let colorName: string = Color[2];
console.log(colorName);

any

type을 알 수 없는 변수를 표현해야 할 떄가 있습니다. 이 경우 type checking를 하지 않고 compile-time check를 통과하고록 합니다. 그렇게 하기 위해서는 any type을 사용합니다.

1
2
3
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;

void

void는 return 값이 없는 함수에서 사용합니다.

1
2
3
function warnUser(): void {
alert("This is my warning message");
}

null과 undefined

null과 undefined은 각각 null type과 undefined type이 있습니다.

1
2
let undefinedVariable: undefined = undefined;
let nullVariable: null = null;

기본적으로 null과 undefined는 다른 type의 subtype입니다.
이것은 null과 undefined를 number와 같은 type에 할당할 수 있다는 것을 의미합니다.

그러나 –strictNullChecks 플래그를 true로 설정하면 null과 undefined는 void과 각자 해당되는 type에만 할당할 수 있습니다. 이렇게 하면 많은 에러를 피할 수 있습니다. string 또는 null 또는 undefined를 넘기려면 union type string | null | undefined를 사용합니다.

Type assertion

type assertion은 다른 언어에서 type cast와 비슷하나 data를 검사하거나 변환하지 않습니다.
runtime에는 아무런 영향을 주지 않으며 compiler만 사용하니다.

type assertion는 두 가지 형태가 있습니다. 하나는 angle-bracket 문법입니다.

1
2
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

다른 하나는 as 문법입니다.

1
2
let someValue: any = "this is a string";
let strLength: number = (soneValue as string).length;

둘중에 선호하는 것을 쓸 수 있으나 JSX와 사용할때는 as 문법이 허용됩니다.

Share