동적 키를 사용하여 개체의 인터페이스를 정의하려면 어떻게 해야 합니까?
이러한 오브젝트는 밑줄에 의해 작성됩니다._.groupBy()
방법.
myObject = {
"key" : [{Object},{Object2},{Object3}],
"key2" : [{Object4},{Object5},{Object6}],
...
}
TypeScript와의 인터페이스로서 어떻게 정의하면 좋을까요?간단히 정의하기 싫습니다.myObject:Object = { ...
나름의 타입이 있는 것 같아요.
오브젝트가 사전처럼 보입니다.Object
어레이
interface Dic {
[key: string]: Object[]
}
타이프 스크립트 문헌에서는 이 패턴을 일반적인 형태로 "색인 가능한 객체의 설명"이라고 종종 언급하고 있습니다.
interface Dic {
[key: string|number]: object_type
}
또는
type Dic = {
[key: string|number]: object_type
}
이제 전용 서비스도 있습니다.Record
TypeScript 에 입력합니다.
const myObject: Record<string, object[]> = { ... }
또, 가능한 한, 키를 입력하는 것을 검토해 주세요.
type MyKey = 'key1' | 'key2' | ...
const myObject: Record<MyKey, object[]> = { ... }
{ [x: string]: T }
그리고.
Record<string, T>
보통 당신의 모든 목표에 도움이 될 것입니다.그러나 어떤 유형의 연산 후에 첫 번째 옵션이 [x: string]과 [x: number] 둘 다 나에게 반환되는 이상한 상황에 이르렀습니다.그것은 재귀형 연산이고 Typescript는 내 재귀형이 일반적이지 않다는 오류를 발생시키기 때문에 나는 레코드를 사용할 수 없었습니다.
그래서 저는 아주 작은 레코드 코드를 연구하면서 저의 복잡한 문제를 해결할 수 있는 솔루션에 도달했습니다.
{ [P in string]: T }
편집: 보통 쓰는 모든 타입스크립트 코드에 utils.ts 파일에 다음과 같은 내용이 있습니다.
export type obj<T = unknown> = Record<string, T>
항상 Record를 사용하는 것보다 빠르고 깔끔합니다.
예:
type MyObjectType = {
propA: obj; // An object with unknown props
propB: obj<number>; // An object with number props
}
인터페이스에 대해서는 알 수 없습니다.다이나믹 오브젝트의 경우는, 다음과 같이 할 수 있습니다.
let memoTable: { [k: number]: number } = {};
memoTable[1]=5;
memoTable[2]=7;
Map을 사용한 솔루션을 제안합니다.아마 도움이 될 것입니다.
type TKey = 'key1' | 'key2' | 'key3';
type TValue = object[];
type TMapper = Map<TKey, TValue>; // But also you can use Record instead of Map
개체를 유형으로 사용하는 대신 레코드 사용
interface myObjInterface {
[key: string]: Record<string, any>[]
}
언급URL : https://stackoverflow.com/questions/39256682/how-to-define-an-interface-for-objects-with-dynamic-keys
'programing' 카테고리의 다른 글
응용 프로그램/x-www-form-urlencoded를 사용한 POST 요청 (0) | 2023.03.16 |
---|---|
WordPress 페이지 및 게시물에 PHP 코드 삽입 (0) | 2023.03.16 |
AngularJs ng클릭으로 다른 페이지로 이동(Ionic 프레임워크 사용) (0) | 2023.03.16 |
웹 팩 빌드 vs 리액트 스크립트 빌드 (0) | 2023.03.16 |
이벤트 핸들러의 React 구성 요소에 대한 참조 가져오기 (0) | 2023.03.16 |