【问题标题】:Typescript error on reduce array function - "string' is not assignable to parameter of type减少数组函数上的打字稿错误-“字符串”不可分配给类型的参数
【发布时间】:2021-05-05 18:31:50
【问题描述】:

我目前正在学习打字稿,并遇到了以下函数的打字稿错误:

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

上述函数产生以下错误:

/app/src/views/myfile.vue(394,11) 中的错误:没有与此匹配的重载 称呼。重载 1 of 3, '(callbackfn: (previousValue: WebspaceBackupArtifactExtended,当前值: WebspaceBackupArtifactExtended,currentIndex:数字,数组: WebspaceBackupArtifactExtended[]) => WebspaceBackupArtifactExtended, 初始值:WebspaceBackupArtifactExtended): WebspaceBackupArtifactExtended',给出了以下错误。我的项目 | '(累加器:数字,工件: WebspaceBackupArtifactExtended) => string' 不可分配给 '(previousValue: WebspaceBackupArtifactExtended, currentValue:WebspaceBackupArtifactExtended,currentIndex:数字, 数组:WebspaceBackupArtifactExtended[]) => WebspaceBackupArtifactExtended'。我的项目 |种类 参数 'accumulator' 和 'previousValue' 不兼容。 我的项目 |类型“WebspaceBackupArtifactExtended”不是 可分配给类型“数字”。

我的项目 |重载 2 of 3, '(callbackfn: (previousValue: 数字,currentValue:WebspaceBackupArtifactExtended,currentIndex: 数字,数组:WebspaceBackupArtifactExtended[]) => 数字, initialValue: number): number',给出了以下错误。我的项目
| '(累加器:数字,工件: WebspaceBackupArtifactExtended) => string' 不可分配给 '(previousValue: number, currentValue: WebspaceBackupArtifactExtended,currentIndex:数字,数组: WebspaceBackupArtifactExtended[]) => number'。我的项目 |
类型“字符串”不可分配给类型“数字”。我的项目 |
392 | ) 我的项目 | 393 | .reduce(我的项目 | > 394 | (累加器:数字,神器: WebspaceBackupArtifactExtended) => 我的项目 | |
^ 我的项目 | 395 |累加器 + artifact.size, 我的项目 | 396 | 0, 我的项目 | 397 |
);

为什么在我定义了类型之后它会抛出这些错误?我尝试更改此行:

(accumulator: number, artifact: WebspaceBackupArtifactExtended) =>

(previousValue: WebspaceBackupArtifactExtended, currentValue: WebspaceBackupArtifactExtended) =>

但它仍然导致相同的错误消息...

【问题讨论】:

    标签: javascript typescript ecmascript-6


    【解决方案1】:

    您将WebspaceBackupArtifactExtended.size 定义为number,因此accumulator + artifact.size 返回一个字符串。将size 的定义更改为number 可修复错误。

    【讨论】:

      猜你喜欢
      • 2018-06-19
      • 1970-01-01
      • 2016-09-26
      • 2018-02-21
      • 2019-10-30
      • 1970-01-01
      • 2018-06-13
      • 2017-04-23
      • 2021-07-23
      相关资源
      最近更新 更多