![](/img/trans.png)
[英]Array of object reduce typescript error: not assignable to parameter of type 'never'
[英]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.