【发布时间】:2022-01-22 10:32:04
【问题描述】:
我正在一个新工作区中将我的 Angular 项目转换为 v13,当我移动代码时,我遇到了一个我没有答案的 typescript-eslint 错误。
之前的代码如下:
interface IConfigurationSetting {
category?: string,
key?: string,
value?: string | number,
message?: string
}
export class ConfigurationSetting implements IConfigurationSetting {
category: string;
key: string;
value: string | number;
message: string;
constructor(options: IConfigurationSetting = {}) {
this.category = options.category || '';
this.key = options.key || '';
this.value = options.value || '';
this.message = options.message || '';
}
}
export class ConfigurationSettingsGroup {
settings: ConfigurationSetting[];
errors: string[];
constructor(options: {
settings?: ConfigurationSetting[],
errors?: string[]
} = {}) {
this.settings = (options.settings || []).map(setting => new ConfigurationSetting(setting));
this.errors = options.errors || [];
}
}
现在,当 VSC 上的 eslinter 完成时,它会在新的 ConfigurationSetting(setting) 调用中为设置参数产生错误 - “'any'类型的不安全参数分配给'IConfigurationSetting'类型的参数”。
我这样构建我的类是因为我想确保复杂对象或对象数组的属性已建立所有必要的默认值。我仍然可以映射上面的复杂对象数组吗?如果是这样,我该怎么做才能让它绕过这个不安全的规则而不完全禁用它?或者,现在有没有更好的方法来对复杂对象类型的属性映射数组?
更新:我做了一项更改,删除了分配给“IConfigurationSetting”类型参数的“any”类型的不安全参数错误:
this.settings = <ConfigurationSetting[]>(options.settings || []).map((setting: ConfigurationSetting) => new ConfigurationSetting(setting));
但我仍然收到 typescript-eslint 错误:
“any”类型值的不安全调用。 eslint(@typescript-eslint/no-unsafe-call)
此错误发生在 (options.settings || []).map。谁能帮我解决这个问题?
【问题讨论】:
标签: arrays angular typescript eslint typescript-eslint