使用Typescript 2.0的MomentJS类型定义

Cai*_*pos 7 momentjs visual-studio-2015 typescript2.0

好吧,我关于SO的第一个问题,多么令人兴奋!:)

我试图让MomentJS定义与Typescript 2.0一起使用.

我只是通过这样做,在使Angular定义工作方面没有任何问题npm install @types/angular --save-dev.

但是,MomentJS(2.15.1)已moment.d.ts作为安装时获得的软件包的一部分附带.

如果你尝试对角度进行类似的处理,也就是说npm install @types/moment --save-dev,这就是你得到的:

npm WARN弃用@ types/moment @ 2.13.0:这是Moment的存根类型定义(https://github.com/moment/moment).Moment提供了自己的类型定义,因此您不需要安装@ types/moment!

当然,如果你去node_modules\@types\moment,那里没什么用处.

是的,我已将tsconfig.json文件添加到我的根文件夹中,因此Typescript 2.0将自动获取node_modules上的@types(这就是Angular正常工作的原因),但对于MomentJS,我得到以下错误(因为.d.ts不是在TS2预期的地方):

TS2304找不到名字'时刻'.

我也试过玩"typeRoots"配置tsconfig.json而没有任何运气.

这是我的相关部分package.json:

{
  "devDependencies": {
    "@types/angular": "^1.5.16"
  },
    "dependencies": {
        "moment": "^2.15.1"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用VS2015,如果这很重要的话.

那么......关于如何让Typescript 2.0读取Moment的类型定义的任何想法,它都位于"意外"文件夹中?

rek*_*kna 3

我在其他地方找到了(但不记得在哪里),你应该

通过将导出语句替换为来更改 moment.d.ts

declare module 'moment' {
   export default moment;
}
Run Code Online (Sandbox Code Playgroud)

使用以下行将虚拟文件 fixmoment.ts 添加到您的项目中

import * as moment from 'moment';
Run Code Online (Sandbox Code Playgroud)

现在直接使用 tsc 编译可以编译所有文件。不幸的是VS2015仍然给出错误 tsc:错误TS2688:Build:找不到'moment'的类型定义文件。 我不明白。