【问题标题】:Do modules written in Typescript need a definition file for 'import'?用 Typescript 编写的模块是否需要“导入”的定义文件?
【发布时间】:2014-06-04 04:54:43
【问题描述】:

在NodeJS中,用Typescript编写的模块需要定义文件吗?

我已经编写了一个名为“deck-node”的模块(如果你想测试,可以在 NPM 上使用)但是当我在另一个 Typescript 模块中使用require('deck-node');require 时,我从编译器收到一个错误说:

/deck-node-app/app.ts(5,1): error TS2071: Unable to resolve external module ''deck-node''.
/deck-node-app/app.ts(5,1): error TS2072: Module cannot be aliased to a non-module type.

我认为 Typescript 不需要已经用 Typescript 编写的东西的定义文件。这是不正确的吗?

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    我认为 Typescript 不需要已经用 Typescript 编写的东西的定义文件。这是不正确的吗?

    这仅适用于以特定方式导入的内容。您只能要求相对于当前文件的打字稿文件。不支持任意 NPM 导入。

    你可以告诉打字稿关于外部模块的使用:

    declare module 'deck-node' {
         //rest of the declaration
    

    【讨论】:

    • 好的。谢谢 !有没有一种简单的方法来生成定义文件(Typescript 编译器的definition 选项为每个文件生成一个,这似乎不适合这个用例)?还是必须手写并与库更改保持同步?
    • @conradk 不幸的是目前还没有。关于这个有几个问题悬而未决。这个似乎现在出现在我的搜索中typescript.codeplex.com/workitem/2080
    • @basarat 在 TS 中编写的模块是否仍然需要在源本身之上的 .d.ts 文件(这是键入的?)如果是这样,是否仍然是这种情况从 .ts 到有代表性的 .d.ts 文件没有简单的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2018-11-08
    相关资源
    最近更新 更多