Programming Language/TypeScript

[TypeScript] TypeScript 타입별 정리

재테크하는 개발자 2022. 1. 22. 20:40

 

 

 

타입스크립트는 일반 변수, 객체 속성, 매개변수 등 다양하게 선언할 수 있습니다.

 


 

 

Type 선언

 

▶ Number(숫자)

: 모든 숫자를 지원하는 type 입니다.

부동 소수점은 number 타입이지만, Big Interger는 bigint type 입니다.

const decimal: number = 6;
const hex: number = 0xf00d;
const binary: number = 0b1010;
const octal: number = 0o744;
const big: bigint = 100n;

 

▶ String (문자열)

: 문자열을 나타내며, 작은 따옴표(') or 큰 따옴표(")를 사용해서 문자열 데이터를 감쌉니다.

ES6의 문자열도 지원합니다.

let os: string = "linux";
os = 'window';
let myOs: string = `My computer OS is ${os}`;

 

▶ Boolean (불리언)

: True or False 값을 나타내는 type 입니다.

let isDel: boolean = false;

 

 

 

 

 

▶ Array (배열)

: 순차적인 값을 갖는 배열을 나타냅니다.

아래와 같이 배열을 2가지로 선언할 수 있습니다.

// 문자열과 숫자만 배열 값에 들어갈 수 있음.
let array1: (string | number)[] = ["red", 5, 7, "blue", "yellow", 7, "black"];
let array2: Array<string | number> = [9, "blue", 1, 9, "red", "yellow", 8];

// 배열의 값들을 단언할 수 없다면, any를 사용합니다.
let someArr: any[] = [9, [], {}, [], "black", ture, false];

 

+ readonly, ReadonlyArray타입을 사용해서 읽기 전용 배열도 생성 가능합니다.

아래 예시는 읽기전용이기에 값을 변경(쓰기)를 하려면 에러가 발생 합니다.

let array1: readonly string[] = ["one", "two"];
let array2: ReadonlyArray<number> = [1, 2, 3, 4];
// ERROR
array2[0] = 6;

 

 

▶ Tuple (튜플)

: 정해진 타입의 고정된 길이를 가지는 배열을 표현할 수 있습니다.

// Declare a tuple type
let x: [string, number];
x = ["red", 21]; // OK
x = [21, "red"]; // Error

console.log(x[0].substring(1));  // OK
console.log(x[1].substring(1));  // ERROR

 

 

▶ Enum (열거형)

: enum은 enumerated type을 의미합니다.

열거형은 관련 값 모음을 구성하는 방법이며 값들의 집합을 명명하고 사용할 수 있게 합니다.

값의 종류가 일정한 범위로 정해져있는 경우에 유용합니다.

 

enum Os {
  window = 1,
  linux = 2,
  macOS = 3,
}
let temp: Os = Os.window;     // 1

 

▶ any (모든 타입 허용)

: 외부 라이브러리를 사용하다보면 타입을 모두 알수가 없는 경우가 있습니다.

단언하기 힘들때 any를 사용하여 타입 검사를 모두 무시할 수 있지만, 권장하지 않습니다.

+ 타입스크립트에서 any사용을 금지하기 위해서는 컴파일 옵션에 "nolmplicitAny": true로 세팅하면

any사용시에 에러가 발생합니다.

 

let temp: any = 777;
temp = null;
temp = 'one';
temp = {};

 

 

 

 

▶ Object (객체)

: typeof 연산자가 Object로 반환하는 모든 타입을 나타냅니다.

컴파일러 옵션에서 "strict" = true 로 설정하면 null 은 포함하지 않습니다.

let obj: object = {};
let arr: object = [];
let func: object = function () {}; 
let date: object = new Date();


// object에서 반복적인 사용을 할 경우 인터페이스나 타입으로 사용할 수 있습니다.
interface Person {
  name: string,
  age: number
}

let person1: Person = {
  name: 'sam',
  age: 21
};

let person2: Users = {
  name: 'young',
  age: 32,
  mail: true // Error
}

 

 

▶ UnKnown (알수 없는 타입)

: any와 같은 최상위 type으로 알 수 없는 type 입니다.

어떤 타입의 값도 할당할 수 있지만, unknown을 다른 type에 할당할 수는 없습니다.

단, any와 unknown은 서로 할당 가능합니다.

let temp: unknown = 123;
let test1: number = temp; //  ERROR
let test2: number = temp as number; //타입을 선언하면 할당할 수 있다.
let test3: any = temp;

 

 

 

▶ Null & Undefined

: 모든 타입의 하위 타입으로, 여러 타입들에 할당할 수 있습니다.

+ 컴파일 옵션에서 "strictNullChecks": true 를 통해 null 과 undefined 타입을 할당 할 수 없도록 하는 것이 가능합니다.

단, void 에는 undefined 할당이 가능합니다.

let num: number = undefined;
let str: string = null;
let obj: { a: 1, b: false } = undefined;
let arr: any[] = null;
let und: undefined = null;
let nul: null = undefined;
let voi: void = null;

 

 

 

▶ void 

: 값을 반환하지 않는 함수에서 사욯합니다. 

함수가 반환 타입을 명시하는 곳입니다.

function testFunction(msg: string): void {
  console.log(`message : ${msg}`);
}

 

 

 

 

 

▶ Never

: 절대 발생하지 않을 값을 나타내며 어떤 타입에도 적용할 수 없습니다.

any에도 불가능하며, 항상 예외를 throw하는 함수, error를 return하는 함수등에 반환 type 입니다.

// Function returning never must not have a reachable end point
function errorFunction(message: string): never {
  throw new Error(message);
}

// Inferred return type is never
function failFunction() {
  return error("failed");
}

// Function returning never must not have a reachable end point
function infiniteLoop(): never {
  while (true) {}
}

 

 

 

▶ Union (유니언)

: 2개 이상의 타입을 허용하는 경우에 유니언이라고 합니다.

"|" 키워드를 사용해서 type을 구분합니다.

let temp: (string | number);
temp = 1234;
temp = 'Hello World';

 

 

 

 


 

 

Ref : https://choidr.tistory.com/entry/TypeScript-%ED%83%80%EC%9E%85-%EC%A0%95%EB%A6%AC