const player : {
name: string,
age?:number
} = {
name: "nico"
}
//optional parameter의 경우 undefined일 상태를 감안하여 작성
if(player.age && player.age < 10) {
}
type Player = {
name: string,
age?:number
}
const player : Player = {
name: "nico"
}
type Player = {
name: string,
age?:number
}
function playerMaker1(name:string) : Player {
return {
name
}
}
const playerMaker2 = (name:string) : Player => ({name})
const nico = playerMaker1("nico")
nico.age = 12
type Player = {
readonly name: string,
age?:number
}
const playerMaker2 = (name:string) : Player => ({name})
const nico = playerMaker1("nico")
nico.name = "ddd" <- ❌Error
const player: [string, number, boolean] = ["1", 3, true]
undefined/null
optional parameter는 undefined의 성격을 가짐
any 사용 지양(typescript 규칙에서 벗어남)
타입스크립트에서 중요한 것은 type checker와 소통하는 것
unknown
작업 전에 해당 변수의 타입을 먼저 확인해야함
변수의 타입을 미리 알지 못 할 때 사용
let a: unknown;
any타입과 비슷하지만 any보다 안전함. type checker의 확인이 가능함
void
'비어있는 것'
void는 값을 반환하지 않는 함수의 반환 값을 나타냄.
함수에 return 문이 없거나 해당 return 문에서 명시적 값을 반환하지 않을 때 항상 유추되는 타입.
아무것도 return하지 않는 함수를 대상으로 사용
void를 따로 지정해줄 필요 없음
never
함수가 절대 return하지 않을 때 발생하는 type
함수에서 exception이 발생할 때
타입이 두가지일 수도 있는 상황에서 발생
function hello():never {
console.log("x") <- ❌Error
}
//return하지 않고 에러를 발생시키는 함수
function hello():never {
throw new Error("xxx") ⭕
}
//type을 두 개 지정해줄 경우
function hello(name:string|number) {
if(typeof name === string) {
@@@
} else if (typeof name === number) {
@@@
} else {
name <- name: never
}
}