둘째주 #8 Typescript 기초 -2

김선은·2023년 5월 23일

타입 별칭 Alias


type Player = {
    name: string,
    age?: number
}

const nico : Player = {
    name: "nico"
}

//return 값의 타입 지정! ():뒤에 리턴 타입 지정 가능.

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

// ex1.
type Config = {
    path: string,
    state: object
}
interface Push {
    (path:string):void;
    (config:Config):void;
} //type 으로 해도 되지만 내가 구분하기 쉽게 interface로 함.

const push:Push = (config) => {
    if(typeof config === "string") {console.log(config)}
    else console.log(config.path)
}

//ex2. 인수의 개수가 다른 경우도 있다. 
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
}
profile
기록은 기억이 된다

0개의 댓글