[TypeScript] 타입 선언

2022. 4. 8. 14:32·TypeScript/기초
반응형

TypeScript는 타입을 선언할 때 변수명 옆에 :타입을 붙여주면 된다.

let age:number = 30;
let isAdult:boolean = true;
let car:string = "BMW"

 

number, boolean, string을 통해서 기본적인 유형의 타입을 선언할 수 있다.

 

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

let week1:string[] = ['mon','tru','wed'];
let week2:Array<string> = ['mon','tru','wed'];

배열을 선언하는 방법은 2가지가 있는데,

하나는 타입[]으로 선언하는 방식과 Array <타입>으로 선언하는 방식이 있다. 

 

만약 문자열 배열에 숫자, 숫자 배열에 문자 같이 다른 타입을 넣을 경우 당연히 에러가 발생한다. 

 

let b:[string,number];

b = ['z',1];

튜플(Tuple)이라는 선언 방식인데, 배열에 서로 다른 값을 넣을 경우에 사용한다. 

 

b = ['z',1];  --- 가능
b = [1,'z'];  --- 불가능

string, number 순으로 배열을 선언했기 때문에 ['z',1]은 가능하지만, [1, 'z']는 에러가 발생한다. 

 

b[0].toUpperCase();   --- 가능
b[1].toUpperCase();   --- 불가능

마찬가지로 string에 있는 toUpperCase() 함수도 number 타입에는 당연히 사용할 수 없다. 

 

function sayHello():void {
    console.log("hello");
}

const sayHello2 = ():void => {
    console.log("hello");
}

void는 함수에서 return 해주는 값이 없을 경우에 사용하는 타입이다. 

 

function showError():never {
    throw new Error();
}

function infLoop():never {
    while(true){
        // ...
    }
}

never는 error를 던지는 함수나 영원히 끝나지 않는 함수의 타입으로 사용한다. 

 

enum Os {
    Window,
    Ios,
    Android
}

enum은 비슷한 값끼리 묶여있는 타입이다. 

 

Window, Ios, Android에 특별한 값을 지정하지 않는다면, 자동으로 0부터 증가하는 값을 가진다. 

enum Os {
    Window = 3,
    Ios,
    Android
}

만약 Window = 3을 지정해준다면 Ios는 4, Android는 5의 값을 가진다. 

 

enum Os {
    Window = 3,
    Ios = 10,
    Android
}

또 Ios에 10을 줄 경우 Android는 11의 값을 가지게 된다. 

 

console.log(Os[10])     // --- Ios
console.log(Os["Ios"])  // --- 10

enum은 양방향으로 매핑되어 있기 때문에 위와 같이 사용할 수 있다. 

 

enum Os {
    Window = 'win',
    Ios = 'ios',
    Android = 'android'
}

enum은 숫자뿐만 아니라 문자열도 줄 수 있다. 

 

enum Os {
    Window = 'win',
    Ios = 'ios',
    Android          --- 에러
}

하지만 숫자와 다르게 문자열로 값을 주다가 안 준 값이 있을 경우 에러를 반환하게 된다. 

 

console.log(Os["Ios"])  // --- "ios"

또 다른 특징으로 문자열을 입력할 경우 단방향 매핑만 된다. 

 

enum Os {
    Window = 'win',
    Ios = 'ios',
    Android = 'android'
}


let myOs:Os;

myOs = Os.Window

enum 타입을 가진 변수를 타입으로 가질 경우 해당 변수의 값 외엔 에러가 발생하게 된다. 

 

let a:null = null;
let b:undefined = undefined;

null과 undefined는 말 그대로 null과 undefined 값만 가지는 변수이다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'TypeScript > 기초' 카테고리의 다른 글

[TypeScript] 추가 타입  (5) 2022.04.21
[TypeScript] 기본 타입 정리  (0) 2022.04.16
[TypeScript] 컴파일 시 세부 설정  (0) 2022.04.15
[TypeScript] React에서 TypeScript 사용하기  (0) 2022.04.13
[TypeScript] 필요한 이유  (0) 2022.04.07
'TypeScript/기초' 카테고리의 다른 글
  • [TypeScript] 기본 타입 정리
  • [TypeScript] 컴파일 시 세부 설정
  • [TypeScript] React에서 TypeScript 사용하기
  • [TypeScript] 필요한 이유
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    프로그래머스
    리얼클래스
    리액트
    next.js
    다이소
    javascript
    typescript
    타일러영어
    자바스크립트
    바질
    react
    영어회화
    redux
    Node.js
    네트워크
    영어독학
    Docker
    webpack
    알고리즘
    네이버 부스트캠프
    타입스크립트
    ChatGPT
    바질 키우기
    리얼학습일기
    Babel
    CSS
    CCNA
    덤프
    식물
    ReactNative
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[TypeScript] 타입 선언
상단으로

티스토리툴바