【问题标题】:Converting jQuery .map() method call to TypeScript将 jQuery .map() 方法调用转换为 TypeScript
【发布时间】:2016-12-19 12:59:53
【问题描述】:

我正在将一些 .js 文件重构为 Typescript。

引用 https://github.com/DefinitelyTyped/DefinitelyTyped/tree/types-2.0/jquery 来解析 jQuery 方法。

源代码有几个类似这样的代码实例:

$("#id").map( (ev)=> {
  return $(ev.target).val();
}) 

用法表明 map 需要一个回调,ev 是一个事件(带有一个目标属性),但是 jQuery.d.ts 将方法定义如下:

map(callback: (index: number, domElement: Element) => any): JQuery;

因此,Typescript 编译器会出错,说

'类型编号上不存在属性目标'

jQuery的相关版本是1.7.2

编辑

根据@FunStuff 的回答,我将代码修改如下:

.map( (i, el)=> {
  return $(el).val();
})

Resharper 喜欢哪个。我仍然对在 Vanilla JS 中如何解决该方法签名感到困惑?

【问题讨论】:

    标签: javascript jquery typescript2.0


    【解决方案1】:

    因为第一个参数是索引,它的类型是数字

    $("#id").map((index, element) => {
      console.log(element);
    });
    

    map(callback: (index: number, domElement: Element) => any): JQuery;

    注意第二个参数是当前的 DOM 元素而不是事件。

    现在应该可以了。

    【讨论】:

    • 确实有效,请参阅我的编辑,其中包括第二个查询。
    • 我不确定我是否真的理解第二个问题。你能解释一下吗?
    • 原始代码(return $(ev.target).val();)必须与标准 jQuery(我假设)一起使用,但如何?
    • 它不起作用。我测试了你的代码,它没有抛出错误,但你的 ev 是索引,你的代码返回未定义。此代码仅返回 jquery 对象 console.log($(0));
    • 这不是我的代码,这是我猜测有人将其写入有效接口的问题,它确实有效,但我可能从未想过。
    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2014-07-27
    • 2019-05-03
    • 2016-02-29
    相关资源
    最近更新 更多