원시타입과 리터럴 타입

soo's·2023년 5월 23일
0

TypeScript Study

목록 보기
4/6

0. 타입스크립트 타입

타입 스크립트가 자체적으로 제공하는 타입 = 내장 타입
타입들끼리 부모와 자식 간의 계층 구조를 가지기도 함.

1. 원시타입

하나의 값만 저장하는 타입
number string boolean null undefined 등이 있다.

// 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;

// string
let str1: string = "hello";
let str2: string = `hello`;
let str3: string = `hello ${num1}`;

// boolean
let bool1: boolean = true;
let bool2: boolean = false;

// null
let null1: null = null;

// undefined
let unde1: undefined = undefined;

이렇게 어노테이션을 통해서 변수의 타입을 지정해주고 사용하면 되는데, 모두 원시타입을 사용하고 있다.

2. strictNullChecks

만약 타입은 number로 지정하지만 지금 당장은 줄 값이 없어서 null을 할당해야 할 때는, strict가 true인 경우 에러가 뜰 것이다. null 타입이 아닌 변수에 null 값을 주는 것을 엄격하게 검사할지 결정하는 것이 strictNullChecks이다.
이것을 false로 바꿔주면 타입이 null이 아니지만 null을 할당해도 에러가 나타나지 않는다.

// tsconfig.json
{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "outDir": "dist",
    "strict": true,
    "moduleDetection": "force",
    // null 타입이 아닌 변수에 null 값 엄격하게 검사할지
    "strictNullChecks": false
  },
  "ts-node": {
    "esm": true
  },
  "include": ["src"]
}

// chapter1.ts
// "strictNullChecks": false 로 인해 에러가 나지 않는다.
let numA: number = null;

3. 리터럴 타입

리터럴 타입은 변수의 값을 타입으로 지정하여 사용하는 것이다.

// 리터럴 타입
let numA: 10 = 10;
let strA: "hello" = "hello";

정리

아직까지는 js와 크게 다르지 않은 타입들이라서 이해가 잘 된다. 리터럴 타입은 아직 쓰임을 잘 모르겠다. strictNullChecks는 유연하게 하려면 false로 하고 안전하게 하려면 true로 하면 되겠다.

0개의 댓글