[typescript] Typescript : 중첩 된 개체에 대한 인터페이스를 어떻게 정의합니까?

다음과 같이 구문 분석하는 JSON 페이로드가 있다고 가정합니다.

{
    name: "test",
    items: {
        "a": {
            id: 1,
            size: 10
        },
        "b": {
            id: 2,
            size: 34
        }
    }
}

항목 속성의 값이 키가 문자열이고 해당 값이 Item 인터페이스에 의해 정의 된 객체임을 모델링하기 위해 Example 인터페이스의 정의를 어떻게 설정합니까?

export interface Example {
    name: string;
    items: ???;

}

export interface Item {
    id: number;
    size: number;
}



답변

Typescript를 사용하면 구문을 사용하여 객체 키 유형을 추가 할 수 있습니다 [key: string].

문서에 명시된대로이를 색인 생성 가능한 유형 이라고 합니다 .

인덱싱 가능한 형식에는 인덱싱 할 때 해당 반환 형식과 함께 개체에 인덱싱하는 데 사용할 수있는 형식을 설명하는 인덱스 서명이 있습니다.

귀하의 경우 다음을 사용합니다.

export interface Item {
    id: number;
    size: number;
}

export interface Example {
    name: string;
    items: {
        [key: string]: Item
    };
}

참고로 여기 에 라이브 예제 링크가 있습니다 .


답변