TS - Index signatures

이호현·2021년 2월 16일
0

TS

목록 보기
2/2

인덱스 시그니처

인덱스 시그니처 매개변수 타입은 string이나 number.

interface Dictionary<T> {
  [key: string] : T;
}

[key: string] 이게 인덱스 시그니처를 의미하는것 같다.
key: string이나 key: number로 사용할 수 있는걸로 보인다.
그래서 객체 접근자를 문자열이나 숫자 중 선택해서 사용하려고 할 때 쓰는 느낌이다.



1. 문자열 인덱스 시그니처

interface Dictionary<T> {
  [key: string] : T;
}

let keys: keyof Dictionary<number>;
let value: Dictionary<number>['foo'];
let value2: Dictionary<number>[42];

key의 타입이 string일 때, 객체 property에 접근 하려면
obj['1'], obj[1] 둘 다 가능하기 때문에 위처럼 foo, 42 둘 다 사용 가능하다.



2. 숫자 인덱스 시그니처

interface Dictionary<T> {
  [key: number] : T;
}

let keys: keyof Dictionary<number>;
let value: Dictionary<number>['foo'];	// 오류
let value2: Dictionary<number>[42];

key의 타입이 number일 때는 42는 숫자를 사용해서 가능하지만 foo는 문자열이기 때문에 사용할 수가 없다.

정확한 쓰임새는 잘 모르겠지만 대략적인 느낌은 어떤지 알거 같다.
좀 더 공부를 하다보면 눈에 잘 들어오겠지...

profile
평생 개발자로 살고싶습니다

0개의 댓글