【问题标题】:Typescript 3.0 with $(document).ready带有 $(document).ready 的 Typescript 3.0
【发布时间】:2019-03-09 22:38:56
【问题描述】:

Typescript 中订阅 jQuery document.ready() 的一般描述方法似乎如下

class Foo {
    constructor() {
        jQuery(document).ready(() => {
           ...
        });
    }
}

但是在 Typescript 3.0 中我遇到了一个错误..

Supplied parameters do not match any signature of call type...
should have type assignment to string...
but has type 'Document'

这是一个错误还是正确的签名是什么。

【问题讨论】:

  • 我在 Typescript 3.1、jQuery 3.3.1 和 jQuery 3.3.29 的绝对类型定义中遇到了同样的问题。你有没有解决你的问题?这个问题似乎已经死了。
  • 不,虽然我确实在其他地方得到了一些 cmets,但在构造函数中调用 document.ready() 是不好的做法,但没有可操作的输入
  • 我自己继续问这个问题,确实得到了满意的答案:stackoverflow.com/questions/55432202/…
  • 基本上,$(() => {...}) 是等效的,ready 已弃用。
  • 感谢更新

标签: typescript3.0


【解决方案1】:

答案来自Cannot use `$(document).ready` in TypeScript

$(document).ready(handler) 有两个功能等效的变体,第一个是 $().ready(handler),第二个是直接 $(handler)。

在 jQuery 3.0 中,前两个已被弃用,只剩下 $(handler)。官方的理由是:

这是因为选择与 .ready() 方法,效率低下,可能导致不正确 关于方法行为的假设。

TypeScript 定义文件只是不包含已弃用的语法,为了向后兼容,它仍然有效。您的脚本应如下所示:

$(() => {
    console.log("Hello World!");
});

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2011-06-06
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多