【发布时间】:2020-01-26 18:44:15
【问题描述】:
在下面的代码中,previous + current 出现以下错误:
运算符 '+' 不能应用于类型 'number' 和 'T'。
我怎样才能正确地检查T 是number,我可以两者兼得:
-
prev + curr,没有得到不能应用运算符'+'? - 返回结果
number,而不得到类型“数字”不能分配给类型“T”?
function sum<T>(values: T[]): T {
switch (typeof values[0]) {
case 'number':
return values.reduce((prev, curr) => prev + curr, 0);
default:
return null;
}
}
【问题讨论】:
-
@Estradiaz 我知道自定义类型保护,但不知道在这种情况下如何使用。
-
用例是什么?大多数类型没有
+的有意义的实现。可以不约束吗? -
用例是一个表格组件,您可以传递一个数据对象数组和一个要显示的列数组(
header、field,以及可选的format函数)。此外,数据将按给定的选择器(例如按年份)分组,每组都有一个“总计行”。要计算该行数据,我可以为该列传入一个自定义sum函数,但是我不想在简单的情况下这样做,比如列只是常规的数字。代码很好用,我只是不知道如何正确输入。
标签: typescript typescript-generics