javascript - 如何将 JavaScript 函数转换为在 typescript 中工作

标签 javascript angular typescript

如果我这样写,我不能使用this关键词

  LoadDrawing(drawing_name) {
    this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB,drawing_name);
  }


  LoadCB(drawing, drawing_name) {
    if (drawing == null) {
     return;
    }   
    this.DrawingName = drawing_name;
    drawing.SetParentElement("glg_area");
  }

我不知道该通过什么 drawing & drawing_name使用参数传递时得到相同的东西
LoadDrawing(drawing_name) {
        this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB(param1,param2),drawing_name);
      }

最佳答案

您可以保留 LoadCB 的 this 绑定(bind)通过将其定义为箭头函数:

LoadDrawing(drawing_name) {
    this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB,drawing_name);
}


LoadCB = (drawing, drawing_name) => {
    if (drawing == null) {
     return;
    }   
    this.DrawingName = drawing_name;
    drawing.SetParentElement("glg_area");
}

请注意,这与 TypeScript 无关,而是与 ES6 JavaScript 类有关。

ES6 类方法对待 this以与使用 function 定义的函数相同的方式绑定(bind)关键字确实 - 依赖于调用站点而不是函数的词法范围。箭头函数使用词法范围,因此保留了 this在上述情况下具有约束力。

关于javascript - 如何将 JavaScript 函数转换为在 typescript 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59420145/

相关文章:

node.js - 从 Angular 2 中使用 html-pdf 创建的 Node/express 后端接收文件

javascript - 类型元素上不存在属性 attachshadow

javascript - Webpack 构建在 node_modules 上显示 TS 错误,而不是我的代码

javascript - 如何遍历对象并将键插入数组?

javascript - 在 Node.js 中替换 util.pump()

javascript - 在 Angular 中使用 debounceTime

angular - 如何在 typescript 中动态构建返回语句?

javascript - 如何制作按钮动画波浪?

c# - 如何使用 Angular 和 ASP.Net Core 转换字节数组 [] 中的文件并存储在数据库中?

javascript - 处理联合类型中的不同类型属性