javascript - 有没有办法使用 Typescript 保护您的代码免受 Javascript 怪癖 `Array(length) vs Array(el1,el2,...)` 的影响
问题描述
我不是在寻找其他方法来复制数组。我的问题特别是关于类型。
Typescript 没有反对这种代码(操场):
const sum = original_numbers => {
const numbers_copy = new Array(...original_numbers) // here is the problem
const res = numbers_copy.reduce((acc,v) => acc+v,0)
console.log(res)
return res
}
sum([1,2]) // 3 as expected
sum([1 ]) // 0 !!! And typescript doesn't complain. You can check the playground.
有什么可以做的吗?
解决方案
Array 构造函数有问题(包括这个)。使用 TSLint,您可以使用prefer-array-literal规则来禁止new Array
.
对于 ESLint,您可以使用no-array-constructor。
要从参数创建数组,请考虑Array.of
改用。
推荐阅读
- sql-server - SQL Server Rank() 和分组依据
- python - Python中带有字符串的正则表达式
- docker - 如何使用 docker go-lang API 的 TaskLogs 端点?
- c# - 在 linq Select 语句中将文本组合在一起?
- exchange-server - Release-QuarantineMessage EWS 接口等效
- apache-kafka - Kafka API 的最佳参考文档
- recursion - Ocaml中的计数器变量?
- c++ - c ++运输分配自动终止
- java - 在 google 磁盘 api 中使用凭据的问题
- c# - 3D 空间中的激光投影仪校准