【问题标题】:How can I import a Typescript 1.0 function like a node.js require with arguments?如何导入 Typescript 1.0 函数,如 node.js 需要带参数?
【发布时间】:2014-09-22 04:28:51
【问题描述】:

我正在将遗留代码转换为 Typescript,并且许多其他模块都依赖于签名

var x = require("./someModule.js")(args);

在 Node.js 中,可以执行以下操作:

moduleHello.js

module.exports = function (message) {
    console.log("I'm a module and I say " + message);
}

ma​​in.js

require("./moduleHello.js")("Hello!");    // Should print "I'm a module and I say Hello!"

我曾尝试在 Typescript 中使用 export 关键字,但您似乎无法将其清晰地写成如下:

moduleHello.ts

export function sayHello (message) {
    console.log("I'm a module and I say " + message);
}

ma​​in.ts

// Does not work, error TS1005: ';' expected.
import someVar = require("moduleHello")("I wish this worked");
// Also I'd probably have to call someVar.sayHello() instead, which I'm trying to avoid.

我可以在 Typescript 中编写单行“带参数的要求”以保持与我的旧模块的兼容性吗?还是我必须回退到 Javascript?

提前致谢。

【问题讨论】:

    标签: javascript node.js import arguments typescript


    【解决方案1】:

    您可以使用export = 语法将函数分配给导出。

    所以:

    moduleHello.ts

    function sayHello (message) {
        console.log("I'm a module and I say " + message);
    }
    export = sayHello;
    

    这会生成module.exports = sayHello;的js

    您的 main.ts 代码现在可以使用该函数

    import sayHello = require("moduleHello");
    
    sayHello("This will work");
    

    【讨论】:

    • 我只是在看这个,它似乎只有在我不导出其他任何东西的情况下才有效......所以现在我必须弄清楚如何导出其他项目以及该功能。也许我可以将它们分离到不同的 .ts 文件中。谢谢!
    • 是的,如果您执行 export = 函数,那么这将是该模块中唯一可以导出的函数。
    • 对。我能够通过将各种接口定义拆分到单独的 *.d.ts 文件并添加对该文件的 Typescript 引用来解决此问题。再次感谢您的快速回答。
    猜你喜欢
    • 1970-01-01
    • 2017-02-22
    • 2019-10-31
    • 2015-12-12
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2019-09-04
    相关资源
    最近更新 更多