我一直在使用這個自耕農生成器生成的角1個項目,打字稿:https://github.com/FountainJS/generator-fountain-systemjs
它採用SystemJS和熱蒙公司獲得的依賴性,但新公共類型定義(使用DefinitelyTyped庫)。如何導入一刻類型定義
我一直在努力嘗試導入這些最近幾天時刻的類型定義。 我一直在使用JSPM安裝了一會兒,我發現,它有它自己的類型定義,因此,如果調用命令npm install @types/moment --save-dev
你只能得到一個存根和折舊警告
這是一個存根類型定義Moment (https://github.com/moment/moment)。 Moment提供了它自己的類型 的定義,所以你不需要@ types/moment安裝!
現在,我不知道這是否是我的編輯器,項目或打字稿設置或一個真正的打字稿的問題,但我似乎無法能夠正確導入片刻的類型定義。
如果我這樣做要麼import moment from 'moment';
或import * as moment from 'moment';
我得到我的編輯這個錯誤(原子與原子打字稿,但我已經在Visual Studio代碼相同的錯誤)Cannot find module 'moment'.
儘管這樣的錯誤,當我建立我的應用它工作正常(調用時刻功能)。
我已經嘗試了很多在互聯網上找到的解決方案(顯然,從時刻導入類型定義是一個常見問題),但都沒有成功。 昨天我設法通過在node_modules/@types
內部手動創建目錄moment
並將moment.d.ts
放入其中(我不得不將其重命名爲index.d.ts
)。
因爲我不太喜歡這個解決方案,所以我想至少創建一個類型文件夾,我可以放入東西而不必修改node_modules
結構。所以,我創建了一個文件夾custom-types
並把moment
文件夾類型定義存在,然後添加到custom-types
tsconfig.json
,我認爲這將一直工作得很好,但實際上錯誤再次出現......
現在我的想法,我真的不知道還有什麼要嘗試。
這是我目前tsconfig.json
(在最後一次嘗試做事情的工作我已經添加了custom-types
文件夾路徑不同,但它是在同一水平node_modules
文件夾和tsconfig.json
文件)
{
"compilerOptions": {
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"module": "system",
"target": "es5",
"moduleResolution": "classic",
"typeRoots": [
"node_modules/@types/",
"./custom-types/",
"custom-types/",
"../custom-types/",
"../../custom-types/",
"../../../custom-types/"
],
"types": [
"angular-ui-router",
"angular",
"angular-mocks",
"jquery",
"jasmine",
"moment",
"es6-shim"
]
},
"compileOnSave": false,
"filesGlob": [
"custom-types/**/*.ts",
"src/**/*.ts",
"src/**/*.tsx",
"!jspm_packages/**",
"!node_modules/**"
]
}
工作!非常感謝 – valepu
非常感謝!找到'tsconfig.json'的正確設置有時候就像解決魔方的問題一樣。 –
謝謝! ''moduleResolution「:」node「'做了一部分技巧,但在我的情況下,我還必須設置''allowSyntheticDefaultImports」:true'。 –