我在 typescriptlang.org(打字稿游乐场)上运行当前代码
我已经阅读了 typeScript 中类型的重要性以及如何在函数中使用它们。但是,我正在努力在此 reduce 方法中添加以下类型:
// Types for car
type Car = {
name:string,
age:number,
registered: boolean
};
// Reduce function to hopefully get the total number of cars that are registered.
function totalRegisteredCars(cars:Car[]) {
cars.reduce((acc:number , car:Car) => {
if(car.registered === true ) {
acc + 1;
}
},0);
}
var cars = [
{name:'vw' , age: 30, registered: true},
{name:'vw' , age: 32, registered: true},
{name:'Merc' , age: 25, registered: false},
{name:'bmw' , age: 20, registered: false},
{name:'bmw' , age: 21, registered: true},
{name: 'ford', age: 31, registered: false},
{name: 'pinto', age: 43, registered: false},
{name: 'uno', age: 41, registered: true},
{name: 'ford', age: 30, registered: true},
{name: 'Mustang', age: 19, registered: false}
];
console.log(totalRegisteredCars(cars));
在https://www.typescriptlang.org/play中有此内容时,我收到以下错误:
错误信息
没有重载匹配此调用。重载 1 of 3, '(callbackfn: (previousValue: Car, currentValue: Car, currentIndex: number, array: Car[]) => Car, initialValue: Car): Car',给出以下错误。
'(acc: number, car: Car) => void' 类型的参数不可分配给 '(previousValue: Car, currentValue: Car, currentIndex: number, array: Car[]) => Car' 类型的参数。参数“acc”和“previousValue”的类型不兼容。“汽车”类型不能分配给“数字”类型。
重载 2 of 3, '(callbackfn: (previousValue: number, currentValue: Car, currentIndex: number, array: Car[]) => number, initialValue: number): number',给出以下错误。'(acc: number, car: Car) => void' 类型的参数不可分配给 '(previousValue: number, currentValue: Car, currentIndex: number, array: Car[]) => number' 类型的参数。类型 'void' 不能分配给类型 'number'。
问题
我可能错过了一个简单的步骤,但编译器抱怨我输入为数字的累加器和输入为 Car 的汽车似乎给了我上面记录的错误。
我只想知道为什么我不能将累加器的类型设置为数字。将来我应该如何在reduce函数中设置类型?