type Player = {
readonly name: string,
age?: number
}
const playerMaker = (name: string) :Player => ({name])
const jaehun = playerMaker("jaehun")
jahun.name = "messi" //-> error
const numbers : readonly number[] = [1, 2, 3, 4]
numbers.push(5) // -> 불가능
readonly를 통해 읽기전용으로 만들 수 있다.
최초선언 후 수정 불가
const player : [string, number, boolean] = ["jaehun", 2, true]
player[0] = 1 //->error
Typescript에게 이 array가 최소 3개의 아이템을 가지며 string, number, boolean의 순서대로여야 함을 알려야 할 때 유용하다.
tuple은 array를 생성할 수 있게 한다. 최소한의 길이를 가져야 하고 특정위치에 특정 타입이 있어야 한다.
let a : undefined = undefined
let a : null = null
let a = []
function hello() {
console.log("hello");
}
hello함수에 커서를 갖다대면 아무것도 return하지 않는 void라는 것을 알려준다.
Typescript는 그 함수가 아무것도 return하지 않는다는 것을 자동으로 인식한다.때문에 hello() : void 이렇게 쓰지 않아도 된다.
function hello(name: string | number) {
if(typeof name === "string") {
name
//커서를 올려보면 name은 string
} else if(typeof name === "number") {
name
//name은 number
} else {
name
//name은 never
//뭘쓰던 그 타입은 never
//이 코드는 절대 실행되지 않아야 한다는 것.
}
}
let a : unknown
if(typeof a === 'number') {
let b = a + 1;
}
위 if구문 안에서는 a의 타입이 number이기 때문에 error없이 코드를 작성할 수 있다.
if(typeof a === "string") {
let b = a.toUpperCase();
}
위 if구문 안에서는 a의 타입이 string이기 때문에 error없이 코드를 작성할 수 있다.