본문 바로가기
TypeScript

데이터 타입

by eddypark 2023. 9. 7.

(1) 선언 방식

- 변수명 뒤에 타입을 명시한다.

- 타입은 대소문자를 구별한다. TypeScript에서 제공하는 타입은 모두 소문자이다.

let a: number = 1; // a는 number타입이다.

let b: number = false; // error 타입이 맞지 않아 오류

(2) 데이터 타입 종류

- JavaScript의 타입은 그대로 사용할 수 있으며, 추가적인 타입은 array, tuple, enum, any, void, never가 있다.

- array : 배열

- tuple : 고정된 요소의 수만큼 타입을 미리 선언 후 배열을 표현한 것이다.

- enum : 열거형. 숫자 값 집합에 이름을 지정한 것이다.

- any : 타입 추론이 불가능 하거나 타입 체크가 필요 없는 변수에 사용. 어떤 타입의 값이라도 할당 가능

- void : 일반적인 함수에서 반환 값이 없을 경우 사용한다.

- never : 절대 발생하지 않는 값

- union : OR연산자와 같이 타입을 여러개 연결시키는 방식이다.

let a: boolean = false;                // boolean
let b: null = null;                    // null
let c: undefined = undefined;          // undefined
let d: number = 6;                     // number
let e: string = "e";                   // string
let f: string = `f`;                   // ES6 템플릿 문자열
let g: string = `a, b, c, d, ${e}.`;   // ES6 템플릿 대입문
const h: object = {};                  // object
let i: any[] = [1, 'two', true];       // array
let j: Array<number> = [1, 2, 3];      // 제네릭 배열 타입

let k: [string, number];               // tuple
tuple = ['wangi', 26];                 // OK
tuple = [26, 'wangi'];                 // Error
tuple = ['wangi', 26, 'eddy', 25];     // Error
tuple.push(true);                      // Error
======================================================
enum l {a, b, c};                      // enum
let m: l = l .b;

console.log(m);                        // 1

enum n{a = 1, b, c};
let o: n = n.b;

console.log(o);                        // 2

enum p{a= 1, b= 2, c= 4};
let q: p = p.c;

console.log(q);                        // 4
=======================================================
let r: any = 4;                        // any타입에 number 할당
r= 'wangi';                            //  any타입에 string 할당
r= false;                              //  any타입에 boolean 할당

function s(): void {
  console.log("wangi");
}

function t(): never {                  // never : 결코 발생하지 않는 값
  while (true) {}
}

function u(x: string | number) {      // |을 사용해 유니온타입설정 x의 타입은 string이거나 number이다.

}

- string타입은 소문자로 시작하지만 대문자로 시작하는 String 타입은 String래퍼 객체 타입을 의미한다.

const a: Date = new Date();  // Date 타입

const b: HTMLElement = document.getElementById('d');   // HTMLElement 타입

class Person { }
const d: Person = new Person();  // Person 타입

- 동적 타이핑도 가능하지만 오류 발생률이 높다.

(3) 타입 추론

- 타입 선언이 생략되면 값이 할당되는 과정에서 동적으로 타입이 결정되는 것

- 타입 추론으로 타입이 결정된 후 다른 타입을 할당하면 에러가 발생한다.

- 타입 추론이 불가능 하면 any타입이 된다.

let a = 123; // a는 number 타입
a = 'hi';      // error a는 number타입으로 결정됨
let b; // let b: any와 같음

b = 'wangi';
console.log(typeof b); // string

foo = true;
console.log(typeof b); // boolean

'TypeScript' 카테고리의 다른 글

Function  (0) 2023.09.07
Interface  (0) 2023.09.05
타입 앨리어스  (0) 2023.09.04
Generic  (0) 2023.09.01
Module  (0) 2023.08.31