我有以下项目:
export interface Tool {
label: string;
visible?: boolean;
icon?: string;
devider?: boolean;
onClick: () => void;
}
this.controls = [
{
label: 'Перемещение',
visible: true,
icon: 'fas fa-arrows-alt fa-fw fa-lg mr-2',
onClick: () => {
this.dispatch(this.activateMoveAction.bind(this), this);
},
}];
和dispather:
dispatch(dispatcher: Function, control: Tool) {}
为什么我会在线上收到这个错误:.bind(this),
this);
Argument of type 'this' is not assignable to parameter of type 'Tool'.
这解决了我的问题,但看起来很糟糕:
this.dispatch(this.activateMoveAction.bind(this), this.controls[0]);
答案 0 :(得分:0)
发生这种情况是因为您使用了保留上下文 (this) 的箭头函数。如果您将使用常规函数,它将具有正确的上下文。
您可以在此处阅读有关箭头函数的更多信息:https://2ality.com/2012/04/arrow-functions.html