typescript - 如何检查数组是否为数字类型并允许 + 运算符
问题描述
在下面的代码中,我收到以下错误previous + current
:
运算符 '+' 不能应用于类型 'number' 和 'T'。
我怎样才能正确地检查这T
是number
我可以两者兼得的方式:
- 没有
prev + curr
得到运算符'+'就不能应用吗? - 返回结果
number
,没有得到Type 'number' is notassignable to type 'T'?
function sum<T>(values: T[]): T {
switch (typeof values[0]) {
case 'number':
return values.reduce((prev, curr) => prev + curr, 0);
default:
return null;
}
}
解决方案
这不会给你你提到的类型错误。但是我们必须为此使用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;
}
}
推荐阅读
- postgresql - R2DBC 和枚举 (PostgreSQL)
- javascript - 如何找到 iframe 的有效链接?
- c# - Swagger 没有找到 ApiVersion 的操作
- c++ - 这个额外的关键字在这个 c++ 类声明中是什么意思?
- java - 测量哪些 Java 代码需要很长时间才能编译
- angular - 为什么在 Angular 8 中生成服务时出现“错误 TS1005: 'from' expected”
- r - R 通过子集和添加两列改进代码
- rest - 使用 Atomikos 事务管理器通过 Spring Boot 实现跨远程 REST 服务的分布式事务
- javascript - 使用控制器和 javascript 从服务器下载文件
- r - R - 计算出现在数据框中的列表中单词的总出现次数,并分组