У меня есть древовидная структура, которая выглядит примерно так:
interface TreeData {
id : number;
text : string;
children : TreeData[];
}
Я хочу обернуть это в неизменяемую карту, но так как я использую TypeScript, я хотел бы использовать некоторую безопасность типов при использовании getи установить.Я нашел в Интернете 2 статьи с предложениями о том, как можно это сделать, см.
https://github.com/facebook/immutable-js/issues/683 https://blog.mayflower.de/6630-typescript-redux-immutablejs.html
Однако моя проблема состоит в том, что мои TreeData содержат списокTreeData детей.Если я определю свой ImmutableMap следующим образом:
export interface ImmutableMap<T, K, V> extends Map<K, V> {
get<I extends keyof T>( key : I & K ) : T[I] & V;
set<S extends keyof T>( key : S & K, value : T[S] & V ) : Map<K, V>;
}
Затем, когда я пытаюсь определить следующее, я получаю сообщение об ошибке машинописного текста:
type ImmutableTreeData = ImmutableMap<TreeData, string, string | List<ImmutableTreeData>>;
[TS] Псевдоним типа ImmutableTreeData циклически ссылаетсясам
Как я могу исправить эту ошибку TypeScript?