簡體   English   中英

減少數組 function 上的 Typescript 錯誤-“字符串”不可分配給類型參數

[英]Typescript error on reduce array function - "string' is not assignable to parameter of type

我目前正在學習 typescript 並從以下 function 中遇到 typescript 錯誤:

export interface WebspaceBackupArtifact {
    readonly date?: string;
    readonly name?: string | null;
    readonly path?: string | null;
    readonly type?: string | null;
}
 
interface WebspaceBackupArtifactExtended extends WebspaceBackupArtifact {
  size: string;
  type: string;
}

const selected = [] as WebspaceBackupArtifactExtended[],

const totalSize = (): number => {
return selected
        .filter(
          (artifact: WebspaceBackupArtifactExtended) =>
            artifact.type !== 'directory',
        )
        .reduce(
          (accumulator: number, artifact: WebspaceBackupArtifactExtended) =>
            accumulator + artifact.size,
          0,
        );
}

上述 function 產生以下錯誤:

/app/src/views/myfile.vue(394,11) 中的錯誤:沒有重載匹配此調用。 Overload 1 of 3, '(callbackfn: (previousValue: WebspaceBackupArtifactExtended, currentValue: WebspaceBackupArtifactExtended, currentIndex: number, array: WebspaceBackupArtifactExtended[]) => WebspaceBackupArtifactExtended, initialValue: WebspaceBackupArtifactExtended): WebspaceBackupArtifactExtended',給出了以下錯誤。 我的項目 | '(accumulator: number, artifact: WebspaceBackupArtifactExtended) => string' 類型的參數不可分配給'(previousValue: WebspaceBackupArtifactExtended, currentValue: WebspaceBackupArtifactExtended, currentIndex: number, array: WebspaceBackupArtifactExtended[]) => WebspaceBackupArtifactExtended'類型的參數。 我的項目 | 參數 'accumulator' 和 'previousValue' 的類型不兼容。 我的項目 | 類型“WebspaceBackupArtifactExtended”不可分配給類型“數字”。

我的項目 | 重載 2 of 3, '(callbackfn: (previousValue: number, currentValue: WebspaceBackupArtifactExtended, currentIndex: number, array: WebspaceBackupArtifactExtended[]) => number, initialValue: number): number',給出以下錯誤。 我的項目
| '(accumulator: number, artifact: WebspaceBackupArtifactExtended) => string' 類型的參數不可分配給 '(previousValue: number, currentValue: WebspaceBackupArtifactExtended, currentIndex: number, array: WebspaceBackupArtifactExtended[]) => number' 類型的參數。 我的項目 |
類型“字符串”不可分配給類型“數字”。 我的項目 |
392 | ) 我的項目 | 393 |.reduce(我的項目 | > 394 |(累加器:數字,工件:WebspaceBackupArtifactExtended)=> 我的項目 | |
^ 我的項目 | 395 | 累加器 + artifact.size,我的項目 | 396 | 0, 我的項目 | 397 |
);

為什么在我定義了類型之后會拋出這些錯誤? 我嘗試更改此行:

(accumulator: number, artifact: WebspaceBackupArtifactExtended) =>

(previousValue: WebspaceBackupArtifactExtended, currentValue: WebspaceBackupArtifactExtended) =>

但它仍然導致相同的錯誤消息......

您將WebspaceBackupArtifactExtended.size定義為number ,因此accumulator + artifact.size返回一個字符串。 size的定義更改為number可修復該錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM