typescript - 타입이 지정된 객체를 매핑하는 문제 | 호출 시그니처가 없는 타입의 표현식을 호출할 수 없습니다
저는 'containers'라는 객체가 있는데, 이 객체는 항상 모든 키에 같은 종류의 컴포넌트를 포함할 것입니다.
다음 코드는 예상대로 작동합니다
interface Dictionary<T> {
[key: string]: T;
}
interface GameContainer {
zIndex: number;
}
interface Game {
containers: Dictionary<GameContainer>;
}
const game: Game = {
containers: {
a: { zIndex: 2 },
b: { zIndex: 4 }
}
}
문제는 '컨테이너'를 매핑하려고 할 때 발생합니다
const something = game.containers.map(container => {
console.log(container)
})
이것을 시도한 후에 오류가 발생합니다
호출 서명이 없는 타입의 식을 호출할 수 없습니다. 타입 'GameContainer'에는 호환 가능한 호출 서명이 없습니다.
보통 자바스크립트에서는 그냥 작동하기 때문에 저에게는 이상합니다.
여기 오류를 볼 수 있는 타입스크립트 플레이그라운드 링크가 있습니다
답변 #1
이걸 시도해 보세요:
declare module namespace {
export interface A {
zIndex: number;
}
export interface B {
zIndex: number;
}
export interface Containers {
a: A;
b: B;
}
export interface RootObject {
containers: Containers;
}
}
사용:
const game: RootObject = {
containers: {
a: { zIndex: 2 },
b: { zIndex: 4 }
}
}
그런 다음 이것을 반복하세요:
Object.keys(game.containers).map(function(key, index) {
console.log(game.containers[key]);
})
