[TypeScript] 기본 타입

Hyunji·2022년 4월 18일
1

공부

목록 보기
21/35
post-thumbnail

기존에 JavaScript로 작성된 코드들을 타입스크립트로 바꿔보기 위해 천천히 하나씩 공부 해나가가기

기본 타입

  • 타입스크립트로 변수나 함수와 같은 자바스크립트 코드에 타입을 정의할 수 있다
  • 타입스크립트의 기본 타입에는 크게 12가지가 있다

String

let str: string = 'hi';
  • 자바스크립트 변수의 타입이 문자열인 경우 위와 같이 선언해서 사용한다

    위와 같이 : 를 이용하여 자바스크립트 코드에 타입을 정의하는 방식을 타입 표기(Type Annotation)라고 한다

Number

let num: number = 10;
  • 타입이 숫자이면 위와 같이 선언한다

Boolean

let isLoggedIn: boolean = false;
  • 타입이 진위 값인 경우에는 위와 같이 선언한다

Object

Array

let arr: number[] = [1,2,3];
let week1: string[] = ['mon', 'tue', 'wed'];
  • 타입이 배열인 경우 간단하게 위와 같이 선언한다
  • 또는 아래와 같이 제네릭을 사용할 수 있다
let arr: Array<number> = [1,2,3];
let week2: Array<string> = ['mon', 'tue', 'wed'];

Tuple

let arr: [string, number] = ['hi', 10];
  • 튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식을 의미한다
  • 만약 정의하지 않은 타입, 인덱스로 접근할 경우 오류가 난다
arr[1].concat('!');
// Error, 'number' does not have 'concat'
arr[5] = 'hello';
// Error, Property '5' does not exist on type '[string, number]'.

Enum

enum Avengers { Capt, IronMan, Thor }
let hero: Avengers = Avengers.Capt;
  • Enum은 C, Java와 같은 다른 언어에서 흔하게 쓰이는 타입으로 특정 값(상수)들의 집합을 의미한다
  • Enum은 인덱스 번호로도 접근할 수 있다
enum Avengers { Capt, IronMan, Thor }
let hero: Avengers = Avengers[0];
  • 만약 원한다면 Enum의 인덱스를 사용자 편의로 변경하여 사용할 수도 있다
enum Avengers { Capt = 2, IronMan, Thor }
let hero: Avengers = Avengers[2];
// Capt
let hero: Avengers = Avengers[4];
// Thor

Any

let str: any = 'hi';
let num: any = 10;
let arr: any = ['a', 2, true];
  • 기존에 자바스크립트로 구현되어 있는 웹 서비스 코드에 타입스크립트를 점진적으로 적용할 때 활용하면 좋은 타입이다
  • 단어 의미 그대로 모든 타입에 대해서 허용한다는 의미를 갖고있다.

Void

let unuseful: void = undefined;
function notuse(): void {
	console.log('sth');
}
  • 변수에는 undefinednull 만 할당하고, 함수에는 반환 값을 설정할 수 없는 타입이다

Never

// 이 함수는 절대 함수의 끝까지 실행되지 않는다는 의미
function neverEnd(): never {
  while (true) {
    
  }
}
function showError(){
  throw new Error();
}
  • 함수의 끝에 절대 도달하지 않는다는 의미를 지닌 타입이다
  • Error을 반환할 때에도 사용한다

https://www.youtube.com/watch?v=70w82P-KiVM&list=PLZKTXPmaJk8KhKQ_BILr1JKCJbR0EGlx0
https://joshua1988.github.io/ts/guide/basic-types.html

profile
성장중인 개발자

0개의 댓글