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

cbd*_*per 1 namespaces typescript babel-node ts-node .d.ts

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

const someFunction = (param: MY_NAMESPACE.PARAM) : boolean => { // DO SOMETHING };
Run Code Online (Sandbox Code Playgroud)

参数类型是通过文件上的Inamespace调用来访问的。像这样:MY_NAMESPACEdeclareMY_NAMESPACE.d.ts

src/MY_NAMESPACE.d.ts

declare namespace MY_NAMESPACE {
  type PARAM: SOME_TYPE
}
Run Code Online (Sandbox Code Playgroud)

我需要运行该MY_FILE.ts文件,其中包含一个脚本。

这工作正常:

npx babel-node src/MY_FILE.ts --extensions ".ts"
Run Code Online (Sandbox Code Playgroud)

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

npx ts-node src/MY_FILE.ts
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

注意:在我的实际情况中,MY_NAMESPACE称为TYPES.

我怎样才能让它工作ts-node

小智 9

我有类似的问题。问题是,ts-node忽略include- 选项,tsconfig.json并且仅在起始文件中遵循导入/引用(请参阅https://github.com/TypeStrong/ts-node#help-my-types-are-missing)。

我通过使用中files的选项解决了这个问题。ts-nodetsconfig.json

{
    "compilerOptions": {...},
    "ts-node": {
        "files": true
    },
    "include": [
        "./src/**/*.ts",
        "./libs/**/*.d.ts"
    ]
}
Run Code Online (Sandbox Code Playgroud)

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