Typescript Day 02 - 타입
18 May 2021 | TypescriptTypescript 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