말하는 컴공감자의 텃밭

Typescript - Type 본문

백엔드/TypeScript

Typescript - Type

현콩 2024. 1. 22. 11:33
728x90

타입 스크립트의 추가 제공 타입이 존재한다.

기존에 number, boolean, string, null 등등 익숙한 명칭의 타입은 알고있었으나

Tuple, Enum, Any, Void, Never, Union 같은 특수한 타입이 있어 정리한다.

 

 

Tuple : 명시된 타입만 사용가능한 타입.

배열을 보다 특수한 형태로 사용할 수 있게해주고, 아이템 순서를 정해 명시된 타입만 사용 가능하게 한다.

var empId: number = 1;
var empName: string = "Steve";        

// 튜플 타입의 변수 선언
var employee: [number, string] = [1, "Steve"];
var person: [number, string, boolean] = [1, "Steve", true];
var user: [number, string, boolean, number, string];// 튜플 변수 선언

user = [1, "Steve", true, 20, "Admin"];// 튜플 변수 초기화

 

배열에서도 동일.

var employee: [number, string][];
employee = [[1, "Steve"], [2, "Bill"], [3, "Jeff"]];

 

push를 활용해서 값을 넣는 예제

var employee: [number, string] = [1, "Steve"];
employee.push(2, "Bill"); 
console.log(employee); //Output: [1, 'Steve', 2, 'Bill']

 


 

Enum : 열거형을 의미하며 값들의 집합을 명시하고, 사용하도록 만드는 타입

enum PrintMedia {
  Newspaper,
  Newsletter,
  Magazine,
  Book
}

// 초기값에 아무것도 넣지않다면 이전값 +1 번호가 붙음
Newspaper = 0
Newsletter = 1
Magazine = 55
Book 
//Book == 56

언어 코드를 정의할때 언어의 집합 생성에서 enum을 사용할 수 있다.

결국 숫자 값을 통해 enum 값 멤버 이름을 도출할 수 있다.

object와 차이가 없어보이는데 enum은 그 자체로 객체이기도 하다.

다만 enum의 속성값으로는 문자열 또는 숫자만 허용된다.

 


 

Void : java와 유사하게 데이터가 없는 경우 void를 사용한다.

반환값이 없는 유형으로 void 를 지정하고, any와 반대 의미를 지닌다. 함수 리턴이 없을때 주로 사용된다.

소문자로 작성한다.

function sayHi(): void { 
    console.log('Hi!')
} 

let speech: void = sayHi(); 
console.log(speech); //Output: undefined
let nothing: void = undefined;
let num: void = 1; // Error

 


Never : 절대 일어나지 않을 값.

어떤 일이 절대 일어나지 않음이라 확신할때 사용된다. 일반적으로 함수 리턴으로 사용되며 오류를 리턴하거나 절대 내보내지 않을 함수에 적용한다. ex) 무한루프

 

function throwError(errorMsg: string): never { 
            throw new Error(errorMsg); 
} 

function keepProcessing(): never { 
            while (true) { 
         console.log('I always does something and never ends.')
     }
}

 

 

참고 : https://www.tutorialsteacher.com/typescript/typescript-number

728x90

'백엔드 > TypeScript' 카테고리의 다른 글

TypeScript - 함수 오버로딩  (1) 2024.01.24
TypeScript - 호출, 인덱스 시그니처  (0) 2024.01.24
Comments