Index Signature
아주 가끔 객체 안에 들어있는 속성들의 key
를 특정짓지 못하는 경우가 있을 수 있다.
그런 경우 객체 속성의 key
를 모르는 상태이기 때문에 Type
정의에도 지장이 생긴다. 이럴 경우에는 인덱스 서명 방식을 사용할 수 있다.
1
2
3
4
5
6
7
8
type Props = {
[key: number]: string | boolean | Function,
};
const props: Props = {
title: 'Hello world!',
1: 'good', // Type '{ title: string; 1: string; }' is not assignable to type 'Props'. Object literal may only specify known properties, and 'title' does not exist in type 'Props'.(2322)
};
type
을 정의할 때 정확히 어떤 key
로 속성이 정의 될 지 확실하지가 않다면 key
가 될 수 있는 type
만을 기재하여 유동적으로 객체를 확장할 수 있다.
반드시
Index Signatures
의 속성은string
혹은 ```number``여야 한다.주의할 점
```typescript type Props = { [key: string]: string | boolean | Function, type: string, // OK index: number, // Property ‘index’ of type ‘number’ is not assignable to ‘string’ index type ‘string | boolean | Function’.(2411) };
const props: Props = { index: 1, };
Index Signatures를 사용하면 반드시 나머지 속성들도
Index Signatures```의 유형을 따라야 한다.