如何导入一刻类型定义
我一直在使用这个自耕农生成器生成的角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/**"
]
}
我已经在TypeScript(IntelliJ)中使用moment
,没有额外的工作来为它安装类型。
以下是相关配置:
- 内
tsconfig.json
:"moduleResolution": "Node"
- 在所有
-
./package.json
没有"types"
部分没有@types/moment
- 内
./node_modules/moment/
:-
./moment.d.ts
存在 -
./package.json
有"typings": "./moment.d.ts"
-
./package.json
是"version": "2.14.1"
-
当我切换回"moduleResolution": "Classic"
,打字稿说:cannot find module 'moment'
。所以这可能是罪魁祸首。
工作!非常感谢 – valepu
非常感谢!找到'tsconfig.json'的正确设置有时候就像解决魔方的问题一样。 –
谢谢! ''moduleResolution“:”node“'做了一部分技巧,但在我的情况下,我还必须设置''allowSyntheticDefaultImports”:true'。 –