[TypeScript] 기본 타입

sumin·2023년 3월 19일
0

기본 타입

  • 타입 표기는 식별자 또는 값 뒤에 콜론(:)을 붙여 value:type의 형태로 표기

원시 타입

string / number / boolean

let color: string = "blue";
let num : number = 12345;
let isDone: boolean = false;

array(배열)

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

object(객체)

const user: { name: string, age: number } = { name: 'jenny', age: 20 }

readonly

  • 읽기 전용, 수정할 수 없다.
const numbers: readonly number[] = [1, 2, 3, 4, 5]
numbers.push(1) // error

const array: number[] = [1, 2, 3, 4, 5]
array.push(1)

Tuple

  • 배열에 정해진 개수의 요소와 순서에 맞는 타입만 사용할 수 있다.
const player : [string, number, boolean] = ["jenny", 1, true]
player[0] = 1 // error

Enum(열거형)

  • 특정 값들의 집합을 의미하는 타입
  • 별도의 값을 지정하지 않으면 0부터 시작한다.
  • 숫자와 문자열 기반의 열거형을 제공한다.
enum Direction {
  Up = 1,
  Down, //2
  Left, // 3
  Right, // 4
}
enum Direction {
  Up, // 0
  Down, // 1
  Left, // 2
  Right, // 3
}

unknown

  • 변수의 타입을 미리 알지 못 할 때 사용
  • 작업을 하기 위해 변수의 타입을 먼저 확인 후 작동하기 때문이다.
let a: unknown;
let b = a + 1 // a타입을 모르기 때문에 작동 안됨

// a의 타입을 체크한 후에는 작동 됨
if (typeof a === 'number') {
    let b = a + 1
}
if (typeof a === 'string') {
    let b = a.toUpperCase()
}

any

  • 무엇이든 입력할 수 있다.
  • 타입스크립트의 타입 체크를 비활성화 시켜 버린다.
let str: any = 'hi';
let num: any = 10;
let arr: any = ['a', 2, true];

void

  • 아무것도 return하지 않는 함수를 대상으로 사용
// function hello() : void
// 타입스크립트가 자동으로 추론해주기 때문에 void를 써주지 않아도 됨
function hello() {
    console.log('x')
}

never

  • 함수가 값을 return하지 않을 때
  • 타입이 두가지 일 수도 있는 상황에서 사용
// error
function hello(): never {
  return 'X'
}
// success
// return하지 않고 오류를 발생시키는 함수
function bye(): never {
  throw new Error('X')
}

function info(name: string | number) {
  if (typeof name === 'string') {
    // (parameter) name: string
    name
  } else if (typeof name === 'number') {
    // (parameter) name: number
    name
  } else {
    // (parameter) name: never
    // ㄴ 이 코드는 절대 실행되지 않아야 한다는 것
    name
  }
}

null과 undefined

  • null : 선언(o) 할당(x)
  • undefined : 선언(x) 할당(O)
let u: undefined = undefined;
let n: null = null;

참조
https://www.typescriptlang.org/docs/handbook/2/everyday-types.html
https://ahnheejong.gitbook.io/ts-for-jsdev/03-basic-grammar/primitive-types

0개의 댓글