【问题标题】:Can TypeScript interact with jQuery without a definition file?TypeScript 可以在没有定义文件的情况下与 jQuery 交互吗?
【发布时间】:2012-09-27 03:50:15
【问题描述】:

我一直在尝试了解这个新的 'TypeScript' 东西,我对某些东西有点好奇。

它是否仍然可以与现有的 javascript 框架(如 jQuery)一起工作,而 不需要包含所有这些接口的定义文件?我一直在尝试手动对此进行测试,但目前还不确定该功能的扩展范围。

更新

我所说的“工作”是指简单的功能,而不是像自动完成这样的 IDE 功能。

【问题讨论】:

    标签: typescript


    【解决方案1】:

    简单的答案是是的

    TypeScript 能够与 任何 现有的 Javascript 库完全交互。如果您希望 IDE 中的工具更易于使用,则只需要定义文件。

    此外,如果您不包含定义文件,TypeScript 编译器可能会因为您使用尚未在您的代码中定义的变量(如 $)而生您的气。为了解决这个问题,您可能需要做类似的事情

    declare var $;
    

    也就是说,我不确定您为什么不会想要使用 jQuery 定义文件。用它编写 jQuery 肯定会更愉快。

    【讨论】:

    • 简短的回答是因为我对 javascript 的了解还没有发展到能够快速编写自己的定义文件的程度。随着我的经验越来越丰富,我可能会做得更多。
    • @Ciel 如果没有人已经编写了定义文件,当然,我可以理解你为什么不想自己做。但是jQuery的已经存在了,你可以copy it from here.
    • 另外值得注意的是,如果 TypeScript 附带的 jQuery 定义文件中缺少某些内容,您可能需要自己添加。您可以复制随附的 jquery.d.ts 文件并对其进行修改,也可以通过单独的 ext.d.ts 文件添加扩展名。有关执行此操作的信息,请参阅我在 adding jQuery plugins to TypeScript 上的回答。
    • 定义文件也在这里:github.com/borisyankov/DefinitelyTyped(如果您碰巧使用 Visual Studio,则在 nuget 上)
    • declare var $:any; 更好
    【解决方案2】:

    是的,你可以。例如只写:

    declare var $;
    

    而且您基本上可以使用 JQuery 框架而无需定义任何其他内容。当您转换现有库/移植代码时,这也非常方便。

    【讨论】:

      【解决方案3】:

      Typescript 允许您使用 declare variabledeclare function 语法在所需范围内声明变量(请参阅语言规范中第 9 页的第 1.1 节)。但是,使用环境声明只能是一种短期解决方案,因为您将有效地放弃 Typescript 的所有静态类型检查,因此是 Typescript 相对于 Javascript 最重要的优势之一。

      【讨论】:

        猜你喜欢
        • 2012-10-21
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 2012-06-21
        • 2016-08-11
        • 1970-01-01
        相关资源
        最近更新 更多