Type '{}' is not assignable to type 'X'.ts(2322)
ошибка на строке const c: IDefSettings = {};
Type '{}' is not assignable to type 'IDefSettings'.ts(2322)
если заменить на const c = {};, то на c[key] появляется
Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{}'. No index signature with a parameter of type 'string' was found on type '{}'.ts(7053)
и на return c;
Type '{}' is not assignable to type 'IDefSettings'.ts(2322)
interface IModelSettings {
min: number;
max: number;
from: number;
to: number;
step: number;
stepInPrecents: number;
currentPos: number;
curPosInPoints: number | undefined;
posWithStepInPercents: number;
[index: string]: string | number | undefined;
}
interface IViewSettings {
range: boolean;
scale: boolean;
tooltips: boolean;
vertical: boolean;
confpanel: boolean;
bar: boolean;
thumbMarginFrom: number;
thumbMarginTo: number;
rangeMarginFrom: number;
rangeMarginTo: number;
[index: string]: string | boolean | number;
}
interface IUserSettings {
min ? : number;
max ? : number;
from ? : number;
to ? : number;
step ? : number;
range ? : boolean;
scale ? : boolean;
vertical ? : boolean;
tooltips ? : boolean;
confpanel ? : boolean;
bar ? : boolean;
}
type IDefSettings = IViewSettings | IModelSettings;
function updateObjectValues(
defaultSettings: IDefSettings,
userSettings: IUserSettings,
): IDefSettings {
// error
const c: IDefSettings = {};
const keys: string[] = Object.getOwnPropertyNames(defaultSettings);
keys.forEach((key) => {
c[key] = key in userSettings ?
userSettings[key as keyof IUserSettings] :
defaultSettings[key as keyof IDefSettings];
});
return c;
}
Как исправить?