2023년 3월 16일 목요일

TypeScript의 기초 데이타 타입들

 

TypeScript의 기초 데이타 타입들

TypeScript에서 가장 많이 사용되는 3가지 기초 데이타 타입은 아래와 같다.

number

숫자에 대한 타입으로 Integer, Float 등을 모두 포함하는 숫자를 가리킨다. JavaScript와 마찬가지로, TypeScript의 모든 숫자는 기본적으로 부동소수점 숫자로 취급된다. 숫자는 10진수, 16진수 (0x), 이진수(0b), 8진수 (0o) 등을 사용할 수 있다.

1
2
3
4
let a: number = 10;
let b: number = 3.14;
let c: number = 0xff
let d: number = 0b1101;
string

문자열을 가리키며, 'Hello', "Hello" 등과 같이 단일인용부호와 이중인용부호를 모두 사용할 수 있다. 만약 여러 라인에 걸쳐 문자열을 쓰거나 문자열 중간에 임베디드 표현식(예: ${expr})을 사용한다면, backtick (`) 을 사용하는 템플릿 문자열을 사용할 수 있다.

1
2
3
4
let seq: number = 1;
let s : string = `Current number is ${seq}
Next number is ${seq + 1}`;
console.log(s);
boolean

true 혹은 false 값을 가진 부울린 타입을 가리킨다.

1
2
3
4
let ok: boolean = true;
if (ok) {
    console.log("OK");
}

TypeScript의 Primitive 타입들

TypeScript는 string, number, boolean, bigint, symbol, null, undefined 등과 같은 Primitive 타입을 지원한다.

null, undefined 타입

JavaScript에서와 같이, TypeScript에서 undefined는 변수가 정의되었지만 어떠한 값이 할당되지 않은 것을 의미하며, null은 "nothing"을 의미하는 null 값이 변수에 할당된 것을 의미한다.

1
2
3
4
5
6
7
// "undefined" 출력됨
let x;
console.log(x);
 
// "null" 출력됨
let y = null;
console.log(y);

TypeScript에서 undefined 타입의 변수를 정의하면 이 변수는 undefined 값만을 가질 수 있고, null 타입의 변수를 정의하면 이 변수는 null 값만을 가질 수 있다. 하지만, 이렇게 undefined, null 타입의 변수를 정의하는 것은 큰 의미가 없으며, undefined, null는 일반적으로 다른 타입에 값이 할당되지 않은 상태내 null 상태를 표현하기 위해 사용된다. 예를 들어, number 타입의 변수에 undefined나 null을 할당할 수 있다.

1
2
3
4
let z: number = undefined;
 
// "undefined" 출력됨
console.log(z);
bigint 타입

bigint 타입은 2^52 - 1 까지를 지원하는 정수 타입으로 ECMAScript에서 큰 정수를 핸들링하기 위해 제안되었다. TypeScript는 v3.2부터 bigint 타입을 지원하고 있는데, 이전 버전과의 호환성 때문에 TypeScript 컴파일러 타겟(target)이 "ESNext" 로 설정된 경우에만 컴파일한다. (주: --target 옵션에 대해서는 ECMAScript 아티클을 참고)

TypeScript에서 bigint 타입에 값을 할당하기 위해서는 BitInt(숫자) 함수나 숫자 뒤에 Postfix "n"을 붙여 표시한다.

1
2
3
let i: bigint = 1234567890n;
i = BigInt(1234567891);
console.log(i);

TypeScript 컴파일러 타겟을 esnext 로 설정하기 위해서는 아래와 같이 tsc 컴파일러 옵션을 사용할 수도 있고, tsconfig.json에 컴파일러 옵션을 지정할 수도 있다.

PS C:\src\ts> tsc --target ESNext test1.ts
PS C:\src\ts> node test1.js
1234567891n
PS C:\src\ts> 
symbol 타입

symbol은 ECMAScript 2015에서 도입된 Primitive 타입이다. symbol은 Symbol() 생성자를 호출하여 생성하는데, 한번 생성된 symbol 값은 변경할 수 없으며 유일무이한(unique) 값을 가지게 된다. 아래 예제는 2개의 심벌을 생성하였을 때, 생성된 심벌들이 동일하지 않음을 예시한 것이다. Symbol() 생성자를 생성시 문자열 키를 받아들일 수 있지만, 동일한 문자열 키를 사용하더라도 Unique한 심벌값을 생성한다.

1
2
3
4
5
6
7
let sym1 = Symbol();
let sym2 = Symbol();
console.log(sym1 === sym2); // false
 
let sym3 = Symbol("key");
let sym4 = Symbol("key");
console.log(sym3 === sym4); // false

symbol은 흔히 Unique한 객체 속성 Key나 클래스 멤버를 만들기 위해 사용된다. 아래 예제에서는 symId 라는 심벌을 생성한 후 이를 obj 객체를 생성할 때의 속성 키로 사용하고 있다.

1
2
3
4
5
6
const symId = Symbol();
let obj = {
    [symId]: 12345
};
 
console.log(obj[symId]);

symbol은 ECMAScript 2015에서 도입되었으므로, tsc 타켓을 es2015 혹은 그 이후로 설정해야 한다. (주: tsc target 옵션에 대해서는 ECMAScript 아티클을 참고)

댓글 없음:

댓글 쓰기