Archive

Typescript Day 02 - 타입

|

Typescript Day 02 - 타입


타입 주석 (Type Annotation)

타입스크립트는 자바스크립트의 변수 선언을 확장해 타입을 명시할 수 있다. 이를 타입 주석이라 한다

let 변수명: 타입 = 값

let num: number = 1
let auth: boolean = true
let name: string = 'jack'
let data: object = {}


타입 추론 (Type Inference)

타입스크립트는 자바스크립트와의 호환성을 위해 타입 주석을 생략할 수 있다. 컴파일러는 = 연산자 오른쪽의 값에 따라 타입을 추론하여 지정한다.

let num = 1 // number로 판단
let auth = true // boolean으로 판단
num = '1'; // 오류, 한번 타입이 정해지면 다른 타입 넣을 수 없음

let score; // 아무 값도 주지 않으면 any 타입이 됨
const name = 'jack' // const는 상수이기에 선언시 반드시 초기화가 필요


any 타입

자바스크립트와의 호환성을 위해 어떤 종류의 값도 저장할 수 있는 any 타입을 제공한다.

any는 다른 모든 타입의 최상위 타입이다.

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

any 타입은 타입의 일부만 알고 전체를 알지 못할 때 유용하다. 예를 들어, 여러 타입이 섞인 배열

let list: any[] = [1, true, 'jack']


null과 undefined

타입스크립트에서 null과 undefined는 타입이기도 하고 값이기도 하다.

let u: undefined = undefined
let n: null = null

null과 undefined는 다른 모든 타입의 최하위 타입이다.

타입이 undefined면 string, number 등 상위 타입의 값을 가질 수 없다. 그 반대는 가능하다.


타입 단언 (Type Assertions)

타입스크립트에서는 타언어의 타입변환이 아닌 타입 단언이라는 용어를 사용한다.

타입 변환과 유사하지만 런타임에 영향을 미치지 않고, 오직 컴파일러만 이를 이용한다.

(<타입>객체)

(객체 as 타입)

두 가지 형태가 있다. 똑같은데 리액트에서는 as를 사용하도록 하자

interface IName {
    name: string;
}

let obj: Object = { name: 'jack' };
let name1 = (<IName>obj).name; // jack
let name2 = (obj as IName).name; // jack

참고 자료


Do it 타입스크립트 프로그래밍

Typescript-Handbook