Когда я делаю это, I get “ts-ignore - error TS2322: Type 'any' is not assignable to type 'never'
type Obj = {
key1: number;
key2: string;
key3: string | null;
};
type Keys = keyof Obj;
function mutateObj(obj: Obj, key: Keys, value: any) {
obj[key] = value;
}
Я получаю ошибку выше.Когда я удаляю ноль из key3, он работает нормально.если вы делаете key3?: string;
, я получаю ту же ошибку.Я знаю, что делаю что-то не так, и это относится к нулевому / неопределенному типу, но не знаю, как решить.
Обновление: спасибо за реализацию.Фактический вариант использования находится внутри immer-редуктора в приложении реакции, и мне интересно, есть ли способ напечатать это без вспомогательной функции.(сейчас я использую функцию для изменения черновика в первом ответе. Большое спасибо! :-))
const myReducer = produce((draft:<Obj>, action:{type:”update_prop”; prop: Keys, value: any })=>{
switch (action.type) {
case “update_prop” :
// below gets type error
draft[action.prop] = action.value;
return;
}
})