타입스크립트를 빠르게 알기 위해 이 강의의 2, 3 챕터만 들을 예정이다.
let a : boolean = true
let b = "hello" -> 이 경우 변수 b의 타입이 String 이라고 추론해줌
이 강의는 짧고 가독성 좋은 코드를 만들기 위해 명시적 정의를 최소한으로..
player라는 object에 name은 필수 사항, age는 선택 사항이고 싶을 때 타입 정의 방법
const player : {
name:string,
age?:number
} = {
name: 'sia'
}
여러명의 player가 필요할 때 alias 사용 가능
type Player = {
name: string,
age?: number //type도 변수로 가능 (type Age = number;)
}
const sia : Player = {
name: "sia"
}
함수에서 return 타입 지정하는 방법
function playerMaker(name:string) : Player {
return {
name
}
}
const sia = playerMaker("sia")
sia.age = 26
const playerMaker = (name:string) : Player => ({name})
readonly 속성 부여하기
//예시 1
type Name = string;
type Player = {
readonly name: Name, // 수정 불가
age?: number
}
//예시 2
const numbers: readonly number[] = [1, 2, 3]
numbers.push(1) //error
Type tuple
(readonly와 같이 쓰기 가능)
: 항상 정해진 개수의 요소를 가져야 하는 array를 지정해야 할 때
const player: [string, number, boolean] = ['sia', 1, true]
Type any
: 비어있는 값을 쓸 때 기본값은 any
: 타입스크립트의 장점을 활용할 수 없으므로 이 강의는 사용하지 않는 것을 추천
let a = [] //a의 type은 any[]
Type unknown
: 어떤 타입인지 모를 때
: 타입 확인 작업을 하지 않으면 error
let a:unknown;
let b = a + 1 //error
if(typeof a === 'number'){
let b = a + 1
}
Type void
: 아무것도 return 하지 않는 함수
: 보통 따로 지정해 줄 필요는 없음
Type never
: 많이 사용하지는 않음
: 함수가 절대 return 하지 않을 때
: (ex. 함수에서 예외가 발생하거나 타입이 두 가지 일수도 있는 상황..)
function hello():never{
throw new Error('xxx')
}
function hello(name: string|number){
if(typeof name === "string"){
name //이 경우 name의 타입은 string
} else if (typeof name === "number"){
name //이 경우 name의 타입은 number
}
else { //변수 타입이 올바르게 들어온다면 실행되지 않을 부분
name //이 경우 name의 타입은 never
}
}