typescript - 运算符 '+' 不能应用于类型 'Number' 和 'Number'。为什么?
我正在尝试创建一个简单的函数,用于在给定的数组中找到最小的两个整数。TypeScript 新手,但熟悉 Javascript,我想知道为什么 TypeScript 会抱怨两个数字相加时出现问题:
const array: Number[] = [
2, 3, 4, 2, 4, 3, 5, 2, 5, 91, 2, 4, 32, 43, 3, 5, 3435,
];
const twoSmallest = (array: Number[]): Number[] => {
if (array.length < 2) return array;
const maxSum = array.reduce((acc: Number, curr: Number):Number => {
return curr + acc;
}, 0);
for (let i = 0; i < array.length; i++) {
//About to add my rest of the code here
}
};
console.log('Result = ', twoSmallest(array));
答案#1
Number 是使用 Number 构造函数创建的类型,例如
const someNum = new Number(123);
这会产生奇怪的后果,几乎不应该使用。
对于普通数字——也就是 99% 的时间应该使用的——你只需要使用 number,例如
const array: number[] = [
2, 3, 4, 2, 4, 3, 5, 2, 5, 91, 2, 4, 32, 43, 3, 5, 3435,
];
将所有的 Number 替换为 number,它就会按预期工作。
当不必要时,你也可以去掉显式注解,TypeScript 会为你推断它们——手动注解越少,错误输入的可能性就越小。
