타입 별칭 Alias
type Player = {
name: string,
age?: number
}
const nico : Player = {
name: "nico"
}
function fnplayerMaker(name:string) : Player{
return {name}
}
const nicol = fnplayerMaker("nicol")
nicol.age = 13
const ArrplayerMaker = (name:string): Player => ({name})
const aria = ArrplayerMaker("aria")
readonly 속성! 요소를 읽기 전용으로 만들어준다.
type Player2 = {
readonly name : string,
age?: number
}
const Maker2 = (name:string, age?:number): Player2 => ({name, age})
const kimsun = Maker2("sun")
console.log(sunsun)
kimsun.name = "못바꿈"
overloading
- overloading 외부 라이브러리는 오버로딩을 많이 쓰기에 알아두면 좋다
- 함수가 여러개의 콜 시그니처를 가졌을 때 발생함.
- call signatures: 함수의 인자와 반환 타입을 지정
- 매개 변수와 변수 타입 또는 리턴 타입이 다른 여러 버전의 함수를 만들고 콜 시그니처를 작성하여 다양한 방식으로 호출 가능.
type Add = (a:number, b:number) => number;
const add:Add = (a,b) => a+b
type Config = {
path: string,
state: object
}
interface Push {
(path:string):void;
(config:Config):void;
}
const push:Push = (config) => {
if(typeof config === "string") {console.log(config)}
else console.log(config.path)
}
type Add2 = {
(a:number, b:number) : number
(a:number, b:number, c:number) : number
}
const add2:Add2 = (a, b, c?:number) => {
if (c) return a + b + c
return a + b
}