【问题标题】:Load js file into typescript file将js文件加载到打字稿文件中
【发布时间】:2012-12-08 21:11:22
【问题描述】:

我有一个简单的 TypeScript (ts),它需要来自 JavaScript 文件的函数。如何将该 js 文件导入 ts 文件?我是否必须为该 js 文件创建一个 ts 文件才能在我的 ts 文件中使用它?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    最简单的方法是 declare 您正在使用的函数:

    File1.js

    function greet() { return "Hello!"; }
    

    File2.ts

    declare function greet(): string;
    
    /* ... later ... */
    var hi = greet();
    

    如果您的场景更复杂(即多个文件引用 File1.js,或者 File1.js 中有许多函数会使 File2.ts 混乱),您可以创建一个 File1.d.ts 文件并从文件2.ts:

    File1.d.ts

    function greet(): string;
    

    File2.ts

    /// <reference path="File1.d.ts" />
    
    /* ... later ... */
    var hi = greet();
    

    【讨论】:

    • 嗨瑞恩,谢谢你的作品!然而,我使用的一个文件将方法添加到数学库中。所以 Math.uuid.js 文件里面有三个方法; Math.uuid() 返回字符串,其他两个...... TS 抱怨这个“声明函数 Math.uuid(): string;” (明显地)。我将如何引入这些方法?谢谢!
    • 找到了!我声明了这个接口... interface Math { uuid(): string; } 一切都很好。
    • 有没有办法从 .js 文件自动生成 *.d.ts 文件?谢谢 - 戴夫
    • @DavidThielen 很好地解释了为什么这里不容易做到typescript.codeplex.com/discussions/451987。我敢肯定还有更多关于这个主题的文章,但这满足了我的问题
    【解决方案2】:

    仅针对存档,如果您在 TS 文件中为 JavaScript 文件添加 /// 引用,编译器将尝试验证 JS 文件中的所有代码并抛出一个巨大的错误列表。用 jQuery 或类似的东西试试,你就会明白我的意思了。

    【讨论】:

    • 是的,我已经看到了。我在没有 jquery d.ts 文件的项目中放置了声明 var $ 并且不包含该 ref。
    • 这是为您没有 .d.ts 文件的任何类型添加支持的最快方法。定义文件的好处是您可以获得 Intellisense。
    • 我一直在使用DefiniteTyped文件,这是一个很棒的项目。
    • 它甚至不允许你这样做(我不确定这是否自 2012 年以来发生了变化) - 你得到 Incorrect reference: Only files with a .ts extension are allowed - 或者你可能打算将 .js 重命名为 .ts。无论哪种方式,你肯定是对的,你会弄得一团糟:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2017-03-09
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2017-12-28
    相关资源
    最近更新 更多