TypeScript

TIL | Data 기본 타입

Data Type

  • Javascript와 타입 종류는 비슷하지만 동적 타입이 아닌 정적이며, 타입이 결정된 후 다른 타입의 데이터가 해당 변수에 할당될 수 없다. (좀더 엄격한 기준을 갖고 있다.)

JavaScript Data Type

  • Primitive: number, string, boolean, bigint, symbol, null, undefined
  • Object: function, object, array ...

 

Number

const num1: number = 1;
const num2: number = 0.01;
const num2: number = -12;
const num: number = "string"; //Type 'string' is not assignable to type 'number'.
  • 할당하는 데이터 타입이 숫자이다.
  • 자연수, 정수, 음수 모두 가능하다. (이외 타입을 가진 데이터가 들어갈 경우, error가 발생한다.)

 

String

const str: string = "string입니다.";
  • 할당되는 데이터 타입이 문자열이다.

 

Boolean

const boolean1: boolean = true;
const boolean2: boolean = false;
  • 할당되는 데이터 타입이 boolean(true, false)타입이다.

 

Undefined (단독 사용x)

let name: undefined;
let age: number | undefined; // number 타입의 값이 존재하거나, 또는 undefined을 할당('|': or를 뜻한다.)
age = 1;
age = undefined;
  • 할당되는 데이터 타입이 undefined이다.
  • undefined만 선언될 경우, 어떠한 타입의 데이터도 해당 변수에 할당되지 못하기 때문에, undefined만 단독적으로 할당하지 않고 optional로 사용한다.

 

Null (단독 사용x)

let person: null;
let person2: string | null; // |: or를 뜻한다.
person2 = "yongmin";
person2 = null;
  • 할당되는 데이터 타입이 null이다.
  • undefined과 마찬가지로, null 또한 직접 할당하지 않고 optional로 사용한다.

 

Unknown

let notSure: unknown = 0;
notSure = undefined;
notSure = "anytype";
notSure = true;
  • 할당되는 데이터 타입이 unknown, 뜻 그대로 할당되는 데이터 타입을 알 수 없다.
  • 타입이 없는 자바스크립트와의 연동을 위해 사용하며 (자바스크립트의 return값 타입을 모를 경우), 그 이외의 경우에는 사용하지 않는 것을 권장한다.

 

Any

let anything: any = 0;
notSure = undefined;
notSure = false;
//
function Add(a, b) {
  return a + b; // return값이 any로 확인됨
}
  • 할당되는 데이터 타입이 any, 모든 데이터 타입의 값을 할당할 수 있다. (unknown은 모른다면, any는 뭐든지 가능한 느낌?)
  • 위의 Add 함수처럼 Add의 parameter의 타입을 결정하지 않을 경우 자동으로 any으로 타입이 결정됨을 확인할 수 있다.

 

Void

function print() { // function print(): void 
  console.log("i'm void");
}
//
function print2(): void {
    console.log("i'm, void"); // 타입을 명시하는 것을 권장한다.
  }
  • 함수에서 return값이 없을 때 (비어 있을 때) 자동으로 void로 지정된다.
  • 자동 지정이 되어도, 타입을 명시하는 것이 관례적이므로, 왠만하면 작성하도록 하며 변수에는 지정하지 않도록 하자. (return값 자체가 비어있어 undefined만 할당할 수 있기 때문)

 

Never

function throwError(message: string): never {
  // message => server(log) 서버쪽에 에러메세지를 남긴 후에
  throw new Error(message); //에러를 던질 수 있다.
}
  • 죽은 함수, 에러가 발생하거나 함수가 끝나지 않는 무한루프 상태일때 사용하는 타입이다. (솔직히 이 부분에 대해서는 아직 잘은 모르겠다 ... 좀더 찾아봐야겠다 ..)

 

Reference

'TypeScript' 카테고리의 다른 글

TIL | Union, Intersection  (0) 2021.10.23
TIL | Alias  (0) 2021.10.23
TIL | Array, readonly, Tuple  (0) 2021.10.23
TIL | 함수 타입 이용(type, spread, default, rest)  (0) 2021.10.23
TIL | TypeScript이란?  (0) 2021.10.23