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;
}

Как исправить?


Ответы (0 шт):