Skip to content

Latest commit

 

History

History
173 lines (115 loc) · 3.89 KB

File metadata and controls

173 lines (115 loc) · 3.89 KB

1. 원시타입과 리터럴타입

원시타입

동시에 한 개의 값만 저장할 수 있는 타입들을 말함

ex. 원시타입이 아닌 배열이나 객체 같은 비 원시타입들은 동시에 여러 개의 값들을 저장할 수 있는 반면 number, string, boolean 등의 원시타입은 숫자면 숫자, 문자열이면 문자열 딱 하나의 값만 저장할 수 있음.

원시타입은 여러 타입들중 가장 기본이되는 타입

실습 환경 설정

src폴더 아래에 chapter1.ts를 생성

이때 tsconfig.jsonisolateModules 옵션이 true로 설정되어 있기 때문에 export 키워드를 하나 이상 사용해야 함.


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;

이때 변수의 이름 뒤에 콜론과 함께 변수의 타입을 정의하는 이런 문법을 ‘**타입 주석**’ 또는 ‘**타입 어노테이션**’이라고 부름
num1 = 'hello'; // ❌

num1.toUpperCase(); // ❌

→ 이때 number 타입으로 정의한 변수에는 nubmer 타입을 제외한 값을 할당할 수 있으며, number 타입의 값이 사용할 수 없는 toUpperCase 등의 메서드는 사용할 수 없음


string 타입

문자열을 의미하는 타입. 단순 쌍따옴표 문자열 뿐만 아니라 작은 따옴표, 백틱, 템플릿 리터럴로 만든 모든 문자열을 포함

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

boolean 타입

참과 거짓만을 저장하는 타입. true 또는 false만 이 타입에 해당

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

null 타입

오직 null 값만 포함하는 타입

// null
let null1: null = null;

undefined 타입

null 타입과 마찬가지로 오직 하나의 값 undefined만 포함하는 타입

// undefined 타입
let unde1: undefined = undefined;

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

JS에서는 다음과 같이 아직 값이 정해지지 않은 상태에서는 변수에 null을 임시로 넣어두고곤 했음

let numA = null;

하지만 TS에서는 이 numA가 만약 number 타입의 변수일 경우 다음과 같이 오류가 발생함

let numA: number = null;  // ❌

→ null은 number 타입에 포함되는 값이 아니기 때문에 에러…


하지만 null 값을 변수의 입시값으로 활용할 수 있음.

  • tsconfig.json의 strictNullChecks(엄격한 null검사) 옵션을 false로 설정
{
  "compilerOptions": {
    ...
    **"strictNullChecks": false,**
		...
  },
  "ts-node": {
    "esm": true
  },
  "include": ["src"]
}

→ 기본 값은 true

또한 위 옵션은 strict 옵션의 하위 옵션임. 따라서 strict 옵션이 true이면 자동으로 true로 설정되며 반대로 strict 옵션이 false이면 자동으로 false로 설정됨

리터럴 타입

하나의 값만 포함하도록 값 자체로 만들어진 타입

  • 리터럴 = 값

따라서 다음과 같이 변수의 타입을 숫자 10으로 설정하는 것 또한 가능함

let numA: 10 = 10;

→ numA의 타입을 10으로 설정함

→ numA에는 10이외의 값을 저장할 수 없게 됨


숫자 값 뿐만 아니라 문자열이나 불리언 타입의 값도 모두 리터럴 타입으로 만들 수 있음

let strA: "hello" = "hello";
let boolA: true = true;
let boolB: false = false;