본문 바로가기
Typescript

Typescript | 원시, 리터럴 타입

by 리잼 2024. 10. 24.
반응형

원시타입

원시 타입은 배열이 아닌 한개의 값만 저장할 수 있는 타입들을 말함.

 

number

  • 숫자를 의미하는 모든 값들을 의미함
  • 정수, 음수, 소수, Infinity, Nan 등 특수한 숫자도 포함
// number
let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;

// 이렇게 선언된 num 변수는 string 타입값이 사용 불가능한 toUpperCase() 는 사용이 불가능함
num1.toUpperCase(); // Error

string

  • 문자열을 의미하는 타입
  • 쌍따옴표, 작은 따옴표, 백틱, 템플릿 리터럴로 만든 모든 문자열을 의미
// string
let str1: string = "hello";
let str2: string = 'hello';
let str3: string = `hello`;
let str4: string = `hello ${str1}`;

boolean

  • 참과 거짓을 저장하는 타입 
// boolean
let bool1 : boolean = true;
let bool2 : boolean = false;

null

// null
let null1: null = null;
  • 오직 null 값만 포함하는 타입

undefined

// undefined 타입
let unde1: undefined = undefined;
  • null과 마찬가지로 오직 undefined 만 포함하는 타입

null 값을 다른 타입의 변수에 할당하기

// JS 에서는 변수에 값을 할당하기 전에 null 선언이 가능했다
let numA = null;

// TS 에서는 numA 변수가 number 타입이라면 에러가 발생함
let numA: number = null;  
// null은 number 타입에 포함되는 값이 아니기 때문에 오류가 발생하는 것

 

만약 null 값을 변수의 임시값으로 사용하고 싶다면

tsconfig.json

{
  "compilerOptions": {
    ...
    "strictNullChecks": false, // 엄격한 검사 false 로 설정
		...
  },
  "ts-node": {
    "esm": true
  },
  "include": ["src"]
}

 

  • strictNullChecks 옵션은 TS 에서 null 값을 null 타입 이외의 타입의 변수에 할당하는 것을 금지할지 허락할지 결정하는 옵션
  • 기본값은 true이며 이 옵션이 true로 켜져있을 경우 엄격하게 null 값을 검사해 null 타입이 아닌 변수에는 null 값을 할당할 수 없도록 제한
  • false 로 설정하면 어떤 타입의 변수든 null 값 할당 가능
  • 안전한 TS 코드를 작성하는 측면에서 도움이 되지 않음

리터럴 타입

타입스크립트에는 string, number 처럼 범용적으로 많은 값을 포함하는 타입 뿐만 아니라 딱 하나의 값만 포함하는 타입도 존재

다음과 같이 타입을 숫자 10으로 설정하는것 또한 가능

// 이렇게 하면 numA 에는 10 이외의 값이 들어올 수 없다
let numA: 10 = 10;

 

이렇듯 하나의 값만 포함하도록 값 자체로 만들어진 타입을 TS 에서는 리터럴 타입이라고 부름

// 다른 타입들도 가능하다
let strA: "hello" = "hello";
let boolA: true = true;
let boolB: false = false;
반응형