TypeScript 카펫 기법에서 색인 서명 오류

3159 단어 TypeScripttech

개시하다


대상 속성에 접근할 때 담요 표시를 사용합니다
동적 키를 사용하여 액세스할 수 있습니다.
API에서 응답하여 속성에 액세스하려는 경우에만No index signature 오류가 생겨 푹 빠졌으니 대응 방법을 정리해보자.

색인 서명


이것은 대상이 어떤 키를 가져올지 표시하는 유형의 변형이다.{[key: T]: U}로 지정합니다.
이 객체는 유형 T의 모든 키에 유형 U의 값이 있어야 함을 나타냅니다.
또한 유형 T는number 또는string형을 사용할 수 있습니다.

하고 싶은 일


구조를 모르는 대상에게는 임의의 키로 속성에 접근할 수 있는 것이 이번에 하고 싶은 일이다.
임의의 대상과 키를 사용하여 그림에 접근하려면 컴파일 오류가 발생합니다.
const returnPersonData = (obj: object, key: string): any => {
  console.log(obj[key]);
};
型 'string' の式を使用して型 '{}' にインデックスを付けることはできないため、要素は暗黙的に 'any' 型になります。
型 'string' のパラメーターを持つインデックス シグネチャが型 '{}' に見つかりませんでした。
obj의 TypeScript 존재 여부key에 대해 잘 몰라서 오류가 발생했습니다.

해본 일


obj의 유형이 지정되었습니다{[key: T]: U}.
const returnPersonData = (obj: {[anyKey: string]: any}, key: string): any => {
이번 대상의 구조는 전혀 예측할 수 없기 때문에ny를 사용했다.
형 안전 면에서 볼 때any를 쓰고 싶지 않은데 찾을 수 없어서 이 방법을 썼어요.
(any 대신string | number | boolean | object도 사용할 수 있지만 이 정도로 줄일 수 없고 지루해서 any를 선택했습니다.)

총결산


다른 방법이 있는 것 같아...
다른 좋은 방법이 있는지 알아볼게요.

참고 자료


https://www.oreilly.co.jp/books/9784873119045/

좋은 웹페이지 즐겨찾기