在带有jQuery的TypeScript中,为什么我得到错误“ this”隐式具有类型any

时间:2018-08-07 03:44:51

标签: jquery typescript

我的代码如下:

$(function() {

    $("table").on("click", function() {
      const button = $(this);
    });

});

我的错误是:

此类型隐式地具有“ any”类型,因为它没有类型注释。

如何解决此错误?

编辑:

我的tsconfig.json如下:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": true,
        "moduleResolution": "node",
        "sourceMap": true,
        "strict": true,
        "outDir": "dist",
        "baseUrl": ".",
        "paths": {
            "*": [
                "node_modules/*",
                "src/types/*"
            ]
        }
    },
    "include": [
        "src/**/*"
    ]
}

编辑2:

我的package.json中有以下内容

"@types/jquery": "^2.0.41",

1 个答案:

答案 0 :(得分:1)

问题几乎完全是编译器所说的:

//*[contains(text(), ':TEST') and contains(text(), 'SELENIUM') and contains(text(), '1234')]

那是因为您在error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. 4 const button = $(this); ~~~~ 中设置了strict: true,同时也打开了tsconfig.json。 TypeScript的docs状态表明noImplicitThis的意思是:

  

使用隐式noImplicitThis类型对此表达式引发错误。

由于在事件处理程序中使用any之前没有指定其类型,因此会出现错误。

解决方法是指定this的类型:

this

这将告诉TypeScript事件处理程序中$(function() { $("table").on("click", function(this: HTMLButtonElement) { const button = $(this); }); }); 的预期类型是什么。

或者,您可以在this中将strict更改为false,但这可能不是一个可行的选择。