我有一个对象数组。我试图不对每个对象重复执行功能。
首先,我实现接口数组的方式是否正确?
第二,如何在每个对象上正确实现我的功能?我不确定在每个对象上分配该函数时是否必须进行调用或绑定。还是我完全做错了。
//interfaces
export interface IEmployee{
id: number;
name: string;
hourly: number;
hours_this_week: number;
paycheck: (() => number);
}
// my function
const calculatePayThisWeek = (): number => {
return this.hourly * this.hours_this_week;
}
export getEmployees = (): IEmployee[] => {
return [
{
id: 1,
name: 'John Doe',
hourly: 10,
hours_this_week: 5,
paycheck: calculatePayThisWeek
},
{
id: 2,
name: 'Jane Doe',
hourly: 15,
hours_this_week: 8,
paycheck: calculatePayThisWeek
}
]
}
答案 0 :(得分:0)
您需要calculatePayThisWeek
才能成为function
,而不是箭头函数。箭头函数捕获了封闭的this
,这不是您想要的。
您不需要绑定任何东西。不过,您应该在this
中注释calculatePayThisWeek
。
完整解决方案:
interface IEmployee {
id: number;
name: string;
hourly: number;
hours_this_week: number;
paycheck: (() => number);
}
// my function
function calculatePayThisWeek(this: IEmployee): number {
return this.hourly * this.hours_this_week;
}
const getEmployees = (): IEmployee[] => {
return [
{
id: 1,
name: 'John Doe',
hourly: 10,
hours_this_week: 5,
paycheck: calculatePayThisWeek
},
{
id: 2,
name: 'Jane Doe',
hourly: 15,
hours_this_week: 8,
paycheck: calculatePayThisWeek
}
]
}