typescript

index signature, recursive type???

jdy8739 2022. 1. 19. 22:37

1)

아래의 index signature의 예시를 보자.

[key: string]: string  <-- 무슨 뜻일까?

 

 

저러면 key값이 string인 모든 프로퍼티는

 

value의 타입이 string이어야만한다.

 

사실 프로퍼티의 key값은 숫자를 넣든 뭘 넣든, 결국 string으로 쳐지기때문에

 

별 의미는 없다.

 

 

 

 

2)

위 사진처럼 논리적으로 어긋나는 타입이 부여되면 에러난다.

 

예시처럼,

 

모든 string 타입 key값은 string타입인 value를 갖는데,

 

string 타입 key인 age보고 number 타입 value를 가지라하면 말이되지않는다.

 

 

 

 

3)

추가로 이런형식도 가능한데,

 

유일하게 string과 number만 프로퍼티의 key값 타입으로 지정될 수 있다.

 

그 외 다른 타입들은 허용되지않는다.

 

string, number 말고 다른 타입을 key의 타입으로 지정해주면 이렇게 안된다고 막는다.

 

 

하여튼

이렇게 key 타입을 number로 하면

 

마치 배열의 인덱스를 사용하는것처럼 객체를 사용할 수 있는데,

 

사실 number 타입 key값은 결국 객체 내부에서

 

string으로 변환되기때문에 저렇게 number 타입 key값을

 

string으로 변환해 인덱싱을해도 사용이 가능하다.

 

그렇기때문에 이렇게 number로 key 타입을 지정하나 string으로 지정하나

 

별 차이가 없는것이다.

 

위 예시들은 전부 기능에 차이가 없다.

 

 

 

 

4)

recursive 타입은 한마디로

 

이런 재귀적인 타입을 지정하는것이다.

 

객체 내부에 반복되는 객체가 존재할 경우 저렇게 괴상한 타입을 사용할 수 있는데,

 

별 쓸일은 없다.