반응형
임의 키를 사용하여 입력한 개체를 선언하는 방법은 무엇입니까?
인어.d.ts
파일, 객체를 문자열 키를 가진 것으로 정의하려면 어떻게 해야 합니까?T
가치관?
예.
declare var Game: {
creeps: Object<string, Creep>; // not sure what syntax to use here
};
declare class Creep {
// definition...
}
Game.creeps
이다.object
하지만 어떤 속성/키를 가질지는 모릅니다. (실행 시 정의됩니다. 사전처럼 사용하고 있습니다.) 하지만 모든 값이Creep
s.
IDE에 "Object is not generic"이라고 표시되어 있어서 구문이 올바르지 않은 것 같습니다.
인덱스 서명 사용:
declare var Game: {
creeps: {[key:string]: Creep}
};
basrat의 대답은 여전히 잘 작동하지만 Typescript 2.1 이상에는 원래 작동할 것이라고 생각했던 것과 더 유사하게 보이는 유형이 있습니다.
declare var Game: {
creeps: Record<string, Creep>
};
실제적인 차이는 없지만, Typescript는 어떤 경우에도K
a를 중히 여기다Record<K, V>
상응하는 것을 생산할 수 있습니다.V
값. 예:
type Creep = {
id: number;
}
function printIt(c: Creep) {
console.log(c.id);
}
let game: Record<string, Creep> = {"test": {id: 0}};
printIt(thing["quest"]);
컴파일됨 - 을 사용하더라도strictNullChecks
물론 런타임 오류가 발생할 수 있습니다.따라서 인덱스 액세스를 직접 확인하거나 사용해야 합니다.--noUncheckedIndexedAccess
@mpen이 제안한 대로 플래그.
언급URL : https://stackoverflow.com/questions/36590284/how-to-declare-a-typed-object-with-arbitrary-keys
반응형
'programing' 카테고리의 다른 글
TypeScript 인터페이스 구현이 메서드 매개 변수를 확인하지 않음 (0) | 2023.06.15 |
---|---|
Python 디버깅 팁 (0) | 2023.06.15 |
하나의 필드를 CLOB로 사용하여 오라클 삽입 스크립트를 작성하는 방법은 무엇입니까? (0) | 2023.06.15 |
VueX: 모듈로 상태를 중첩하지 않습니까? (0) | 2023.06.15 |
R이 단축 축 레이블(과학적 표기법) 표시를 중지하도록 합니다(예: 1e+00). (0) | 2023.06.15 |