【问题标题】:TypeScript Intellisense and jQuery problemsTypeScript Intellisense 和 jQuery 问题
【发布时间】:2012-12-12 19:33:43
【问题描述】:

我正在使用 VS 2012 和带有 jquery 的 TypeScript。我正在将现有的 JS 应用程序转换为 TS 并且遇到以下问题:

$(window).load(function () {
//stuff
});

$(window).load 带有下划线,错误是“提供的参数与调用目标的任何签名都不匹配”。 我正在使用带有 jquery.d.ts jquery ts 注释的 jquery 1.7.2。 我在文件顶部添加了参考链接。

我做错了什么?

编辑: 当然,我已经在 VS 中安装了打字稿,它不会改变任何东西来编辑参数,它可以是“窗口”或其他任何东西,它一直在出错。 它期望的 load() 的定义是 (url:string, data: any, complete: any) 而在 jQuery doc 中它只是一个函数..

【问题讨论】:

  • 你为VS2012安装了typescript吗
  • 它是否接受 $(document) 代替 $(window)?如果是这样,d.ts 文件必须仅具有文档、字符串和字符串/对象的重载 - 这意味着需要更新定义以允许窗口。

标签: javascript jquery intellisense typescript


【解决方案1】:

Typescript 定义仅包含 1 个特定版本的加载函数的定义,即从 url http://api.jquery.com/load/ 加载 html 的定义。 Typescript 仍处于 alpha 阶段,别忘了。

这应该不会影响你使用 Typescript,除非你会继续收到警告。

作为替代方案,您可以将代码更改为以下内容:

$(window).on("load", function() {
    /// so stuff
});

【讨论】:

  • 谢谢,本来以为i是另一种加载方法的定义,但是没想过用on。我会这样做,但是对于 TS 中的错误,问题是它根本无法在 JS 中编译;有什么方法可以“跳过”我知道不是真正问题的错误?
  • 解决此类错误的一种简单方法是将有问题的对象转换为<any>,例如(<any>$(window)).load(() =>{})
  • @KenSmith $(window as any).load(() => {})recommended in the latest TypeScript version
猜你喜欢
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 2019-01-31
  • 2020-04-29
  • 2016-07-28
  • 2014-09-20
  • 2020-04-04
  • 2014-10-30
相关资源
最近更新 更多