[英]Typescript Array Map of Objects Producing No Unsafe Any Error
我正在將我的 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’類型的參數”。
我這樣構建我的類是因為我想確保復雜對象或對象數組的屬性已建立所有必要的默認值。 我仍然允許像上面這樣的復雜對象 map arrays 嗎? 如果是這樣,我該怎么做才能讓它繞過這個不安全的規則而不完全禁用它? 或者,現在有沒有更好的方法來屬性 map arrays 復雜的 object 類型?
更新:我做了一項更改,刪除了分配給“IConfigurationSetting”類型參數的“任何”類型的不安全參數錯誤:
this.settings = <ConfigurationSetting[]>(options.settings || []).map((setting: ConfigurationSetting) => new ConfigurationSetting(setting));
但我仍然收到 typescript-eslint 錯誤:
對“任何”類型值的不安全調用。 eslint(@typescript-eslint/no-unsafe-call)
任何人都可以幫我弄清楚嗎?
您的代碼片段中有一些隱式類型轉換,這似乎是 linter 警告的內容。
這些看起來像原因:
constructor(options: IConfigurationSetting = {}) {
// ^ here, this has "any" type
this.settings = (options.settings || []).ma...
// ^ here, this has "any[]" type
你可以做一些鑄造來解決它:
constructor(options: IConfigurationSetting = <IConfigurationSetting>{}) {
...
this.settings = (options.settings || <ConfigurationSetting[]>[]).ma...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.