首页 > 解决方案 > 如何检查数组是否为数字类型并允许 + 运算符

问题描述

在下面的代码中,我收到以下错误previous + current

运算符 '+' 不能应用于类型 'number' 和 'T'。

我怎样才能正确地检查这Tnumber我可以两者兼得的方式:

function sum<T>(values: T[]): T {
  switch (typeof values[0]) {
    case 'number':
      return values.reduce((prev, curr) => prev + curr, 0);
    default:
      return null;
  }
}

标签: typescripttypescript-generics

解决方案


这不会给你你提到的类型错误。但是我们必须为此使用unknown类型。

function sum<T>(values: T[]): T {
  switch (typeof values[0]) {
    case 'number':
      return (values.reduce((prev, curr) => prev + <number><unknown>curr, 0)) as unknown as T;
    default:
      return null;
  }
}

推荐阅读