Type Annotation
개발자가 타입을 타입스크립트에게 직접 말해준다.
const rate: number = 5 // number 타입 지정
Type Inference
타입스크립트가 알아서 타입을 추론한다.
const rate = 5 // **변수 선언과 동시에 초기화할 경우** 타입을 알아서 추론한다
타입을 추론하지 못해 타입 annotation을 꼭 해야 하는 경우
1) any 타입을 리턴하는 경우
coordinates에 hover해보면 const coordinates: any
라고 뜨는 것을 볼 수 있다. JSON.parse는 json
을 파싱해준다. 인풋으로 들어가는 json을 확인하면 대충 어떤 타입이 리턴될지 개발자는 예상할 수 있지만, 타입스크립트는 여기까지 지원하지 않는다. 리턴 타입이 일정하지 않으므로 any를 리턴한다고 추론해버린다. 그러므로 이 경우에는 타입 애노테이션을 해야 한다.
const json = '{"x":4, "y": 7}'
const coordinates = JSON.parse(json)
console.log(coordinates)
2) 변수 선언을 먼저 하고 나중에 초기화하는 경우
변수 선언과 동시에 초기화하면 타입을 추론하지만, 선언을 먼저 하고 나중에 값을 초기화할 때에는 추론하지 못한다.
let greeting
greeting = 'hello' // let greeting: any
3) 변수에 대입될 값이 일정치 못하는 경우
여러 타입이 지정되어야 할 때에는 | (or statement)로 여러 타입을 애노테이션해준다.
let num = [-7, -2, 10]
let numAboveZero: boolean | number = false
for (let i = 0, i < num.length; i++) {
if (num[i] > 0 {
numAboveZero = num[i]
}
}
반응형