我寫了一個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:'導出'修飾符不能應用於環境模塊和模塊增強,因爲它們始終可見「,而且從我能從別處推測出來的模塊聲明已經是環境。