인덱스 시그니처 매개변수 타입은
string
이나number
.interface Dictionary<T> { [key: string] : T; }
[key: string]
이게 인덱스 시그니처를 의미하는것 같다.
key: string
이나key: number
로 사용할 수 있는걸로 보인다.
그래서 객체 접근자를 문자열이나 숫자 중 선택해서 사용하려고 할 때 쓰는 느낌이다.
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
둘 다 사용 가능하다.
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
는 문자열이기 때문에 사용할 수가 없다.정확한 쓰임새는 잘 모르겠지만 대략적인 느낌은 어떤지 알거 같다.
좀 더 공부를 하다보면 눈에 잘 들어오겠지...