我写了一个recase NPM package打字稿定义文件,所以我正在关注的DefinitelyTyped contribution guidelines,其中一部分是运行(对我来说)TSC没有找到本地模块声明,但Webstorm确实
tsc --noImplicitAny recase/recase-tests.ts
这将产生错误:
recase/recase-tests.ts(1,22): error TS7016: Could not find a declaration file for module 'recase'. 'C:/dev/recase-typings/node_modules/recase/recase.js' implicitly has an 'any' type.
稍微修剪,这是我的项目结构:
.
+-- recase
| +-- recase.d.ts
| +-- recase-tests.ts
+-- package.js
+-- tsconfig.json
除了描述,作者,以及类似的领域,这是我package.json
(试图得到它的工作,我已经把两者main
和typings
性质在里面,有没有或任也不起作用):
{
"name": "recase-typings",
"version": "1.0.0",
"devDependencies": {
"recase": "^1.0.4"
},
"typings": "recase",
"main": "recase"
}
这是我tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "recase"
}
}
这是recase/recase.d.ts
:
declare module 'recase' {
namespace recase {
function camelCopy(orig: any): any;
function snakeCopy(orig: any): any;
}
}
这是recase/recase-tests.ts
:
import {recase} from 'recase';
const snake = recase.snakeCopy(
{
FOO: 1, // Exception
abcXyz: { // Normal
_abcXyz: [ // private
{__abcXyz: 1} // very private
, {___abcXyz: 1} // very very private
],
},
},
);
const camel = recase.camelCopy(
{
foo: 1, // Exception
abc_xyz: { // Normal
_abc_xyz: [ // private
{__abc_xyz: 1} // very private
, {___abc_xyz: 1} // very very private
],
},
},
);
我对Windows 7和刚刚做打字稿及分型的删除重新安装,因为以前安装了崩溃。我首先使用yarn global remove
和npm un -i
,然后手动删除tsc
文件和文件夹,这些文件和文件夹保留在/AppData/Local/Yarn/config/global/node/global/
及其.bin/
和NPM的模块文件夹中。
要重新安装,我使用了yarn global add typescript
和yarn global add typings
。使用yarn
来安装TypeScript会产生一行说“我可能打算安装TypeScript”并使用npm install typescript -g
,并且自从tsc
命令was not found
在那一刻起,我使用推荐的命令对其进行了跟踪。
我觉得很奇怪WebStorm编译文件很好,而TSLint没有提供任何错误,但tsc
没有找到声明文件。 如何获得tsc
以查找声明文件?
值得注意的是,tsc
实际上确实产生了一个.js
文件,它与我通过WebStorm进行编译时的内容完全相同。我已经能够找到的最接近的问题讨论是this one,在这种情况下,根本原因未声明为环境外部模块,但在declare module 'recase'
前放export
使TSLint给我“TS2668:'导出'修饰符不能应用于环境模块和模块增强,因为它们始终可见“,而且从我能从别处推测出来的模块声明已经是环境。