我尝试使用它与typescript绑定:
npm install moment --save
typings install moment --ambient -- save
test.ts:
import {moment} from 'moment/moment';
如果没有:
npm install moment --save
test.ts:
var moment = require('moment/moment');
但是当我调用moment.format()时,我得到一个错误。
应该是简单的,谁能提供一个命令行/导入组合,将工作?
2017年4月更新:
从版本2.13.0开始,Moment包含了一个typescript定义文件。https://momentjs.com/docs/#/use-it/typescript/
只要用npm在你的控制台类型中安装它
npm install --save moment
然后在你的Angular应用中,导入就像这样简单:
import * as moment from 'moment';
就是这样,你得到了完全的Typescript支持!
额外编辑:要在Typescript中输入一个变量或属性Moment,你可以这样做,例如:
let myMoment: moment.Moment = moment("someDate");
——2017年11月1日更新
Typings现在已弃用,被npm @types所取代。从现在开始,除了npm,获取类型声明将不需要任何工具。要使用Moment,您不需要通过@types安装类型定义,因为Moment已经提供了自己的类型定义。
因此,它简化为3个步骤:
1 -安装时刻,包括类型定义:
npm install moment --save
2 -在HTML文件中添加script标签:
<script src="node_modules/moment/moment.js" />
3 -现在你可以使用它了。时期。
today: string = moment().format('D MMM YYYY');
——原创答案
这只需要3个步骤:
1 -安装力矩定义- *.d。ts文件:
typings install --save --global dt~moment dt~moment-node
2 -在HTML文件中添加script标签:
<script src="node_modules/moment/moment.js" />
3 -现在你可以使用它了。时期。
today: string = moment().format('D MMM YYYY');
使用ng命令行
> npm install moment --save
在app.module
import * as moment from 'moment';
providers: [{ provide: 'moment', useValue: moment }]
在组件
constructor(@Inject('moment') private moment)
这样你就导入了一次时刻
5 . UPDATE Angular =>
{
provide: 'moment', useFactory: (): any => moment
}
对我来说,在aot中工作
还有通用的
除了利用时间,我什么都不喜欢。时刻
我得到了
Error Typescript Type 'typeof moment' is not assignable to type 'Moment'. Property 'format' is missing in type 'typeof moment'.
尝试在tsconfig.json中添加" allowsyntheticdefaulultimports ": true。
国旗的作用是什么?
这基本上是告诉TypeScript编译器,可以使用ES6导入语句,即。
import * as moment from 'moment/moment';
在CommonJS模块上,比如Moment.js,它没有声明默认导出。该标志只影响类型检查,不影响生成的代码。
如果你使用SystemJS作为模块加载器,这是必要的。如果你告诉TS编译器你使用SystemJS,该标志将自动打开:
"module": "system"
如果ide被配置为使用tsconfig.json,这也将删除由它们抛出的任何错误。