【问题标题】:How to make ts-node aware of a namespace declared in a `d.ts` file?如何让 ts-node 知道在 `d.ts` 文件中声明的命名空间?
【发布时间】:2021-01-04 09:47:57
【问题描述】:

我有一个这样的MY_FILE.ts 文件:

const someFunction = (param: MY_NAMESPACE.PARAM) : boolean => { // DO SOMETHING };

param 类型通过一个名为MY_NAMESPACEnamespace 访问,我在declare 文件上declare。像这样:

src/MY_NAMESPACE.d.ts

declare namespace MY_NAMESPACE {
  type PARAM: SOME_TYPE
}

我需要运行包含脚本的 MY_FILE.ts 文件。

这很好用:

npx babel-node src/MY_FILE.ts --extensions ".ts"

而这不起作用(我希望它能正常工作):

npx ts-node src/MY_FILE.ts

我收到此错误:error TS2503: Cannot find namespace MY_NAMESPACE

注意:在我的真实案例中,MY_NAMESPACE 被称为TYPES

我怎样才能使它与ts-node 一起工作?

【问题讨论】:

    标签: typescript namespaces ts-node .d.ts babel-node


    【解决方案1】:

    我遇到了类似的问题。问题是,ts-node 忽略了tsconfig.jsoninclude-选项,并且只在起始文件中跟随导入/引用(参见https://github.com/TypeStrong/ts-node#help-my-types-are-missing)。

    我通过在tsconfig.json 中使用ts-nodefiles 选项解决了这个问题。

    {
        "compilerOptions": {...},
        "ts-node": {
            "files": true
        },
        "include": [
            "./src/**/*.ts",
            "./libs/**/*.d.ts"
        ]
    }
    

    还有其他解决方案(三斜杠指令、typeRoots)。只需阅读上面的链接。

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2016-11-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多