Index signature 란
객체의 속성(property)에 동적인 키를 사용하여 자유롭게 구현할 수 있도록 도와주는 TypeScript의 문법이다.
구문 (Syntax)
{ [key: KeyType]: ValueType }
- [ ] 안에 key 의 타입을 설정
- key : 객체의 속성을 나타내는 이름
- KeyType : key 의 타입, 주로 string, number 을 사용
- ValueType : 각 키에 해당하는 값의 타입
장점
- 유연성: 사전에 정의되지 않은 키를 다룰 수 있다.
- 타입 안전성: 객체의 키와 값에 대한 타입을 지정하여 타입 안전성을 유지한다.
- 동적 데이터 처리: 동적인 데이터 구조를 처리하는 데 유용합니다. 예를 들어, 외부 API로부터 동적으로 키가 결정되는 데이터를 받을 때 유용하다.
단점
- 데이터 타입의 유연성 부족 : 객체 내에 다양한 타입의 값을 혼합해서 사용할 수 없다
- 유지보수성 감소 : 동적인 속성 이름을 사용하기 때문에, 객체의 구조를 한눈에 파악하기 어렵고, 추후에 구조를 변경하거나 디버깅할 때 어려움이 있을 수 있다.
예제
- string 타입의 키
interface StringIndexSignature {
[key: string]: number;
}
const example: StringIndexSignature = {};
example['one'] = 1;
example['two'] = 2;
console.log(example); // { one: 1, two: 2 }
- number 타입의 키
interface NumberIndexSignature {
[key: number]: string;
}
const example: NumberIndexSignature = {};
example[1] = 'one';
example[2] = 'two';
console.log(example); // { 1: 'one', 2: 'two' }
- DTO 에 string 타입의 키 적용
interface AnimalDataDTO {
[animal: string]: number;
}
export class ExampleDTO {
animal: YearlyDataDTO;
constructor() {
this.animal = {};
}
}
const example: ExampleDTO = new ExampleDTO();
example['tiger'] = 1
console.log(example) // { tiger: 1 }
'프로그래밍 > TypeScript' 카테고리의 다른 글
[ TS ] DTO object 구현 (0) | 2024.08.03 |
---|---|
[ TS ] 불변객체 immutable 장점 / 단점 / 구현방법 (0) | 2024.07.28 |
[ TS ] 비밀번호 암호화 (bcypt) (0) | 2024.06.13 |
[ TS ] tsconfig.json 의 내용 정리 (0) | 2024.06.08 |
[ TS ] 오버로딩 (0) | 2024.05.09 |