如何让 ts-node 知道在“d.ts”文件中声明的命名空间?

How to make ts-node aware of a namespace declared in a `d.ts` file?

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

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

参数类型通过一个名为 MY_NAMESPACEnamespace 访问,我 declareMY_NAMESPACE.d.ts 文件中。像这样:

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 一起使用?

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

我使用 tsconfig.jsonts-nodefiles 选项解决了这个问题。

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

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