Буквенный массив дерева состояний
Можно ли создать буквенный тип массива в MST? Это должно быть эквивалентно
type Interval = ['1min', '5min']
;
Вот пример кода, который выдает ошибку
type Interval = '1min' | '5min';
export interface AppStore {
config: {
intervals: ['1min', '5min']
},
search: {
symbol: string;
interval: string;
dataTypes: string[];
}
}
const appStore = types
.model<AppStore>('appStore', {
config: types.model({
intervals: types.array(
types.literal<Interval>('1min'),
types.literal<Interval>('5min')
),
}),
search: types.model({
dataTypes: types.array( types.string ),
interval: types.union(
types.literal<Interval>('1min'),
types.literal<Interval>('5min')
),
symbol: types.string,
}),
})
types.array()
ожидайте иметь один аргумент, так возможно ли это? Не повезло с документацией MST https://github.com/mobxjs/mobx-state-tree
1 ответ
Решение
Можете ли вы уточнить немного, вы ищете тип массива или тип кортежа? Другими словами, является ли ["1мин"] или ["1мин", "5мин", "1мин"] также приемлемым?
Если это приемлемо, types.array(types.union(types.literal("1min"), types.literal("5min")) должен добиться цели (вы были близки!). Или проще: types.array(types.enum(["1мин", "5мин"])))
Если вы ищете тип кортежа, который еще не реализован: см. https://github.com/mobxjs/mobx-state-tree/issues/805