У меня динамическое действие:
export class ChangeCurrentConfig implements Action {
readonly type = ActionTypes.ChangeCurrentConfig;
constructor(public payload: { key: string, value: any }) {}
}
Где key
- динамический ключ редуктора. Например у меня есть:
interface Config1 {
myPath1: string
}
interface Config2 {
myPath2: string
}
И я загружаю их динамически в CurrentConfig
редуктор. И в эффектах каждого конфига я обрабатываю изменения для каждого конфига. Например Config1
эффект:
@Effect()
changeMyPath1$ = this.actions$.pipe(
ofType(ChangeMyPath1),
map((action: ChangeMyPath1) => action.payload.myPath1),
map(value => {
return new ChangeCurrentActivityConfig({
key: 'myPath1',
value,
});
})
);
Проблема в том, что в этой строке легко ошибиться key: 'myPath1',
. Я хочу предотвратить это с помощью общего действия ChangeCurrentConfig
. Я попробовал:
export class ChangeCurrentConfig<T> implements Action {
readonly type = ActionTypes.ChangeCurrentConfig;
constructor(public payload: { key: keyof T, value: any }) {}
}
Работает хорошо, но я хочу сделать этот универсальный тип обязательным для новых экземпляров класса. Так что, если я напишу в эффектах new ChangeCurrentActivityConfig
без универсального типа, это покажет ошибку. Как я могу этого добиться?