본문 바로가기
JavaScript/TypeScript

[TypeScript] 변수 선언문( 타입 주석, 타입 추론, any )

by dev또리 2023. 2. 22.
728x90

1.  타입 주석(타입 명시)

 

변수 선언시 변수 값의 타입을 명시함으로써 변수 값의 데이터타입을 지정한다.

타입스크립트는 자바스크립트 변수 선언문을 확장하여 아래의 형태로 타입을 명시할 수 있다.

이것을 타입 주석(type annotation)이라고 한다.

 

let 변수 이름: 타입 [=초깃값]
const 변수 이름: 타입 = 초깃값

 

 

타입 주석으로 변수를 선언한 예를 알아 보자

 

let n: number = 1
let b: boolean = true	//혹은 false
let s: string = 'hello'
let o: object = {}

 

타입스크립트는 자바스크립트와 다르게 let으로 선언한 변숫값은 타입 주석으로 명시한 타입에 

해당하는 값으로만 바꿀 수 있다.

선언한 타입과 다른 타입의 값으로 변숫값을 바꾸려고 하면 오류가 발생한다.

 

 

 

2. 타입추론

 

타입스크립트는 자바스크립트와 호환성을 위해 타입 주석 부분을 생략할 수 있다.

타입 표기가 없는 경우 코드를 읽고 타입을 유추할 수 있다.

타입스크립트 컴파일러는 아래와 같은 코드를 만나면 대입 연산자 = 오른쪽 값에 따라 변수의 타입을 지정한다.

이것을 타입 추론(type inference)라고 한다.

 

let n = 1	//n타입을 number로 판단
let b = true	//b타입을 boolean으로 판단
let s = 'ddory'	//s타입을 string으로 판단
let o = {}	//o타입을 object로 판단

 

변수 선언문에 타입 주석을 명시하지 않았지만, 컴파일러가 초깃값에 따라 타입을 추론하므로 각 변수는 초깃값에 해당하는 타입으로 지정된다.

이후에 각 변수에는 해당 타입의 값만 저장할 수 있다.

 

 

 

3. 타입 선언

 

- 변수 타입 선언

 

let 변수명:type

number, string, boolean, null, undefined

object,Array<type>,type[ ]

항목의 값을 지정할 수 없을 때 any를 쓴다.

 

 

 

- any

 

타입스크립트는 자바스크립트와 호환을 위해 any라는 이름의 타입을 제공한다.

아래 코드에서 변수 a는 타입이 any이므로 값의 타입과 무관하게 어떤 종류의 값도 저장 가능 하다.

let a: any = 0
a = 'hello'
a = true
a = { }

 

 

 

- 유니온 타입 UnionType( 다중 타입 )

let strnum: (string | number)

문자열과 숫자열을 동시에 가지는 변수, 중간에 버티컬바를 쓰면 된다.

 

UnionType은 주로 문자열 리터럴에서 사용된다.

 

type Color = "Red" | "Orange" | "Yellow";

let color: Color;
color = "Red";

let color:Color ="Green";	//Color 타입에 존재하지 않은 값을 할당하였기 때문에 오류 발생

 

 

열거형(enum)과 union type의 차이점

 

  • UnionType은 컴파일 타임에만 존재, 열거형(enum)은 컴파일 타임, 런타임에 존재한다.
  • UnionType은 모든 타입의 열거형, 열거형(enum)은 문자열 또는 숫자의 열거형이다.

 

 

728x90

댓글