不推荐使用BaseJQueryEventObject,JQueryEventObject等。我们用什么取而代之?

时间:2017-07-22 18:18:10

标签: jquery angularjs typescript

从jQuery v2迁移到jQuery v3时,不推荐使用类型定义上的BaseJQueryEventObject等接口。

代码的替代品是什么?

例如,对于angularjs,我们有这样的函数:

#include <vector>
#include <algorithm>

struct SomeObj
{
  int i;
};

class MyVector {

public:
  using itr = std::vector<SomeObj>::iterator;
  using citr = std::vector<SomeObj>::const_iterator;

  itr begin() { return things_.begin(); }
  itr end()   { return things_.end(); }
  citr begin() const { return things_.begin(); }
  citr end() const   { return things_.end(); }

private:
  std::vector<SomeObj> things_;
};

int main()
{
    MyVector objs;
    for (auto& obj : objs)
    {
    // ....
    }

    std::for_each(objs.begin(), objs.end(), [](auto& o) { o.i = 1;});

    for (auto i = objs.begin(); i != objs.end(); ++i)
    {
       i->i = 1;
    }

    return 0;
}

我们收到这样的消息:

public keyDown($event: JQueryEventObject) {
    alert ($event.keyCode);
}

以下是新的类型定义:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/7a9ecd61d02e715adf369b191571007bd1a7c572/types/jquery/index.d.ts#L7546

2 个答案:

答案 0 :(得分:7)

我不确定角度,但是,使用最新的Typescript和JQuery我将我的函数签名更改为:

public keyDown($event: JQuery.Event) {
    alert ($event.keyCode);
}

答案 1 :(得分:1)

我有同样的问题,但我解决了它

public keyDown($event: KeyboardEvent) {
    alert ($event.keyCode);
}