[TypeScript] 기본 타입

2022. 12. 20. 17:35·프로그래밍 언어/TypeScript

TypeScript 의 기본 타입에는 boolean, number, string, array, tuple, enum, any, void, null, undefined, never, object 등이 있습니다. 이에 대해 하나씩 예시와 함께 살펴보겠습니다.

불린(Boolean)

true 혹은 false 값을 나타냅니다.

let isExist:boolean = false;

숫자(Number)

TypeScript의 모든 숫자는 부동 소수 값입니다. 16진수, 10진수 리터럴에 더불어 2진수, 8진수 리터럴도 지원합니다.

// 10진수 리터럴
let decimal: number = 3;
// 16진수 리터럴
let hex: number = 0xf00d;
// 2진수 리터럴
let binary: number = 0b1010;
// 8진수 리터럴
let octal: number = 0o744;

console.log(decimal); // 3
console.log(hex); // 61453
console.log(binary); // 10
console.log(octal); // 484

문자열(String)

TypeScript에서는 텍스트 데이터 타입을 string 으로 표현합니다. 큰따옴표(") 나 작은따옴표(') 를 문자열 데이터를 감싸는데 사용합니다.

let fruit: string = "apple";
fruit = "orange";

템플릿 문자열(백틱/백쿼트(`) 문자)을 사용하면 여러 줄에 걸쳐 문자열을 작성할 수 있으며, 표현식을 포함시킬 수도 있습니다.

let fullName: string = `Ron Park`;
let age: number = 27;
let introduction: string = `Hello, my name is ${fullName}
I'll be ${age + 1} years old next year.`;

배열(Array)

배열 타입은 두 가지 방법으로 쓸 수 있습니다.

1. 배열 요소들을 나타내는 타입 뒤에 [ ] 를 쓰는 것입니다.

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

2. 제네릭 배열 타입을 쓰는 것입니다. Array<elementType>

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

튜플(Tuple)

튜플 타입을 사용하면 요소의 타입과 개수가 고정된 배열을 표현할 수 있습니다.

다만 모든 요소의 타입이 같을 필요는 없습니다.

// 튜플 타입으로 선언
let tuple: [string, number];
// 초기화
tuple = ["introduce", 20];
// 잘못된 초기화
tuple = [20, "introduce"]; // 오류 발생

정해진 인덱스에 위치한 요소에 접근하면 해당 타입이 나타냅니다.

console.log(tuple[0].substring(1)); // "ntroduce"
console.log(tuple[1].substring(1)); // 오류 발생, number 타입에는 substring 메서드가 정의되어 있지 않습니다.

정해진 인덱스 외에 다른 인덱스에 있는 요소에 접근하면, 오류가 발생하며 실패합니다.

tuple[3] = "hello"; // 오류, '[string, number]' 타입에는 프로퍼티 '3'이 없습니다.

console.log(tuple[4].toString()); // '[string, number]' 타입에는 프로퍼티 '5'가 없습니다.

열거(Enum)

enum 은 관련 값 모음을 구성하는 방법이며 값의 집합에 이름을 붙여줄 수 있습니다.

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

기본적으로, enum은 0부터 시작해 멤버들의 번호를 매깁니다. 아래와 같이 0 대신 1부터 시작해 번호를 매기도록 바꿀 수 있습니다.

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

enum은 매겨진 값을 사용해 enum 멤버의 이름을 알아낼 수 있습니다.

enum Color {Red = 1, Green = 2, Blue = 4}
let colorName: string = Color[2];

console.log(colorName); // 'Green'

enum은 함수 파라미터나 리턴 타입으로 사용될 수 있습니다.

enum PrintMedia {
  Newspaper = 1, 
  Newsletter,
  Magazine,
  Book
}

function getMedia(mediaName: string): PrintMedia {
  if (mediaName === 'Forbes' || mediaName === 'Outlook') {
    return PrintMedia.Magazine;
  }
}

let mediaType: PrintMedia = getMedia("Forbes"); // returns Magazine

Any

어플리케이션을 만들 때, 알지 못하는 타입을 표현해야 할 수도 있습니다.

사용자로부터 받은 데이터나 서드 파티 라이브러리 같은 동적 컨텐츠의 경우 타입 검사를 하지 않고, 그 값들이 컴파일 시간에 검사를 통과하길 원할 때 사용할 수 있습니다.

let apiData: any = 4;
apiData = "it is apiData";
apiData = { title: "title01", content: "content01" };

 

 

any 타입은 타입의 일부만 알고 전체를 알지 못할 때 유용합니다.

// 여러 다른 타입이 섞인 배열을 다루는 경우
let arr: any[] = ["Ron", 216, true];
arr.push("Smith");
console.log(arr); // ["Ron", 216, true, "Smith"]

Void

void는 어떤 타입도 존재할 수 없음을 나타냅니다. 보통 함수에서 반환 값이 없을 때 반환 타입을 표현하기 위해 사용됩니다.

function sendError(): void {
  console.log("This is error message");
}

void 타입의 변수에는 null 또는 undefined 만 할당할 수 있습니다.

let useless: void = undefined;
useless = null; // --strictNullChecks 를 사용하지 않을 때만 할당 가능

Null and Undefined

// 이 밖에 이 변수들에 할당할 수 있는 값이 없습니다.
let u: undefined = undefined;
let n: null = null;

기본적으로 null과 undefined는 다른 모든 타입의 하위 타입이므로 number 같은 타입에 할당할 수 있습니다.

하지만, --strictNullChecks를 사용하면 null과 undefined는 오직 any와 각자 자신들 타입에만 할당 가능합니다.

Never

never 타입은 절대 발생할 수 없는 타입을 나타냅니다.

never는 함수 표현식이나 화살표 함수 표현식에서 항상 오류를 발생시키거나 절대 반환하지 않는 반환 타입으로 사용됩니다.

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

function keepProcessing(): never {
  while (true) {
    console.log("I always do something and never ends.");
  }
}

never 와 void 의 차이점

void 타입은 null 과 undefined 를 값으로 가질 수 있지만 never 타입은 어떤 값도 가질 수 없습니다.

let something: void = null;
let nothing: never = null; // Error: Type 'null' is not assignable to type 'never'

객체(Object)

object는 원시 타입이 아닌 타입을 나타냅니다.

number, string, boolean, bigint, symbol, null 또는 undefined 가 아닌 나머지를 의미합니다.

declare function create(o: object | null): void;

create({ prop: "value" });
create(null);

create(30); // 오류
create("string"); // 오류
create(true); // 오류
create(undefined); // 오류

출처

https://www.tutorialsteacher.com/typescript/typescript-tuple 

 

TypeScript - Tuples

TypeScript - Tuples TypeScript introduced a new data type called Tuple. Tuple can contain two values of different data types. Consider the following example of number, string and tuple type variables. var empId: number = 1; var empName: string = "Steve"; /

www.tutorialsteacher.com

https://typescript-kr.github.io/pages/basic-types.html 

'프로그래밍 언어 > TypeScript' 카테고리의 다른 글

[TypeScript] Conditional Types, extends, infer  (0) 2022.12.25
TypeScript 언어 소개 및 장점 및 단점, 컴파일러 동작 방식  (0) 2022.11.14
[Typescript] Builder Pattern  (0) 2022.08.07
'프로그래밍 언어/TypeScript' 카테고리의 다른 글
  • [TypeScript] Conditional Types, extends, infer
  • TypeScript 언어 소개 및 장점 및 단점, 컴파일러 동작 방식
  • [Typescript] Builder Pattern
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (103) N
      • k8s (3) N
      • AWS (1)
      • 리눅스 (5)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    레벨2
    코딩테스트
    리눅스
    nestjs
    모듈
    기초
    Kubernetes
    redis
    배열
    조인
    반복문
    Docker
    Python
    mysql
    javascript
    IP 주소
    프로그래머스
    django
    Til
    Kubectl
    네트워크
    컨테이너
    도커
    생활코딩
    typescript
    typeorm
    스택
    iterable
    자바스크립트
    FastAPI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
[TypeScript] 기본 타입
상단으로

티스토리툴바