index signatures - object 타입 지정

크롱·2023년 8월 2일
0

TypeScript

목록 보기
20/25

object 자료에 타입을 미리 만들때

  1. object 자료에 어떤 속성들이 들어올 수 있는지 아직 모르는 경우

  2. 타입지정할 속성이 너무 많은 경우

index signatures 를 사용하면 편리합니당


🌃 사용해보기


interface StringOnly {
  	age :number,
	[key : string] : string | number,
  👉👉모든 문자로 된 속성
}

let user :StringOnly = {
	name : 'kim',
  	location : 'Seoul',
  	nickname : 'kurong',
  	age : 20
}

🙄속성 이름이 숫자인 경우에는?🙄


interface StringOnly {
	[key : number] : string,
  👉👉숫자로 된 속성
  
  	[key : string] : string 
  	==> 사실 이렇게 해도 오류는안난다. 왜냐면 object에서
    숫자로 key값을 정의해도, 문자화 되기때문에.
}

let user :StringOnly = {
	0 : 'kim',
  	1 : 'Seoul',
  
}

🌇 object 안에 object • • •

쓸일은 별로 없겠지만
object 안에 object.... 이런 object 자료 타입지정은 어떻게할까요?

interface MyType {
  'font-size' : {
    'font-size' : {
      'font-size' : number
    }
  }
}

let obj :MyType = {
  'font-size' : {
    'font-size' : {
      'font-size' : 14
    }
  }
}

이렇게해도되지만, 더 간략하게 하는방법이 있어요
recursive 하게 타입만드는법.

interface MyType {
  'font-size': MyType | number
               ==> {'font-size':MyType}
}


let obj :MyType = {
  'font-size' : {
    'font-size' : {
      'font-size' : 14
    }
  }
}

🌆 문제

interface TwoType {

	[key : string] : string | number,

}


let obj :TwoType = {
  model : 'k5',
  brand : 'kia',
  price : 6000,
  year : 2030,
  date : '6월',
  percent : '5%',
  dealer : '김차장',
}

interface MyType {
  'font-size' : number,
  [key :string<] : number | MyType,
}

let obj = {
  'font-size' : 10,
  'secondary' : {
    'font-size' : 12,
    'third' : {
      'font-size' : 14
    }
  }
}
profile
👩‍💻안녕하세요🌞

0개의 댓글