Basic Types

장유진·2022년 6월 21일
2

TypeScript

목록 보기
3/14

https://www.typescriptlang.org/docs/handbook/basic-types.html


Boolean

true/false의 값을 가짐

Number

숫자, floating point나 BigInteger와 같은 숫자들도 포함
BigInteger는 bigint 타입을 가짐

String

문자열
쌍따옴표(")나 따옴표(')를 사용하여 표기
templete string: 역따옴표(`)를 사용하여 표기, 여러 줄과 ${expr}로 변수를 나타낼 수 있음

let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${fullName}.

I'll be ${age + 1} years old next month.`;

Array

아래 두 가지 방법으로 선언할 수 있음

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

Tuple

각 element의 타입과 element의 수가 지정되어있는 array

let x: [string, number];

Enum

여러 개의 데이터를 한 묶음으로 모음

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

Unknown

변수가 어떤 타입이든 될 수 있음을 나타냄
typeof 이나 비교를 통해 unknown 변수의 타입을 확인할 수 있음

let maybe: unknown;
// 'maybe' could be a string, object, boolean, undefined, or other types

if (maybe === true){ ... }
if (typeof maybe === "string") { ... }

Any

변수의 타입 검사를 진행하지 않아 any 타입의 변수로는 모든 것이 가능함
unknown과 다르게 임의의 property나 method가 존재하는지, 혹은 타입이 정확한지 확인하지 않고 허락함
Any를 남용하면 type saftey를 해칠 위험이 있음

let looselyTyped: any = 4;
// OK, ifItExists might exist at runtime
looselyTyped.ifItExists();
// OK, toFixed exists (but the compiler doesn't check)
looselyTyped.toFixed();

Void

어떤 타입도 가지고 있지 않음, any의 반대라고 생각해도 됨
void에는 null이나 undefined만 할당할 수 있음

Null & Undefined

모든 다른 타입들의 subtype이기 때문에 number와 같은 타입에 null이나 undefined를 할당할 수 있음

Never

절대로 발생하지 않을 값의 타입
ex) 항상 에러를 던지거나 절대 return하지 않는 함수의 타입이 될 수 있다.
never는 모든 타입의 subtype이고 모든 타입에 대입할 수 있지만, 어떤 타입도 never의 subtype이거나 대입할 수 없다. 심지어 any도!

// Function returning never must not have a reachable end point
function error(message: string): never {
  throw new Error(message);
}

// Inferred return type is never
function fail() {
  return error("Something failed");
}

// Function returning never must not have a reachable end point
function infiniteLoop(): never {
  while (true) {}
}

Object

Non-primitive type을 의미함, 여러 primitive type 변수가 합쳐진 거라고 생각하면 편함 (primitive type: string, number와 같은 가장 원초적인 타입)

let x = {name: string, weight: number};

Type assertions (타입 주장)

컴파일러에게 이 변수가 어떤 타입이라고 주장하는 것(알려주는 것). type casting과 비슷하다.
as 또는 <> 를 사용함

let someValue: unknown = "this is a string";

let strLength1: number = (someValue as string).length;
let strLength2: number = (<string>someValue).length;
profile
프론트엔드 개발자

2개의 댓글

comment-user-thumbnail
2022년 9월 19일

TS에서 Array<datatype>datatype[] 의 두가지 방법으로 배열을 선언할 수 있는데, 이 두가지 선언방식이 완전히 똑같이 동작할까요? (예전에 뭔가 둘이 다르게 동작해서 찾아봤던거 같은데 기억이 안나네요) 혹시 해당 사항 관련해서 뭔가 있을까요..?

1개의 답글