Dro*_*iss 25 momentjs typescript systemjs
我的项目设置包括用于库的'jspm'工具和用于打字的'tsd'工具.
在安装了moment的TypeScript d.ts文件(这些)之后,我找不到加载和实际使用时刻实例的方法.
在我的文件中(使用SystemJS模块加载)
/// <reference path="../../../typings/tsd.d.ts" />
import * as moment from "moment";
import * as _ from "lodash";
...
...
const now = (this.timestamp === 0) ? moment() : moment(this.timestamp);
Run Code Online (Sandbox Code Playgroud)
我得到一个" TypeError:时刻不是函数 "
这些定义的结构与lodash相同,工作正常,所以我不知道原因可能是什么.
有人可以帮忙吗?
Mar*_*cka 30
我做了以下事情:
我安装了moment 定义文件如下:
tsd install moment --save
Run Code Online (Sandbox Code Playgroud)
然后我创建了main.ts:
///<reference path="typings/moment/moment.d.ts" />
import moment = require("moment");
moment(new Date());
Run Code Online (Sandbox Code Playgroud)
我跑了:
$ tsc --module system --target es5 main.ts # no error
$ tsc --module commonjs --target es5 main.ts # no error
Run Code Online (Sandbox Code Playgroud)
main.js 看起来像这样:
// https://github.com/ModuleLoader/es6-module-loader/blob/v0.17.0/docs/system-register.md - this is the corresponding doc
///<reference path="typings/moment/moment.d.ts" />
System.register(["moment"], function(exports_1) {
var moment;
return {
setters:[
function (moment_1) {
// You can place `debugger;` command to debug the issue
// "PLACE XY"
moment = moment_1;
}],
execute: function() {
moment(new Date());
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的TypeScript版本是1.6.2.
这是我发现的:
Momentjs导出一个函数(即_moment = utils_hooks__hooks,它utils_hooks__hooks是一个函数,非常清楚.
如果在我PLACE XY上面指出的位置放置一个断点,你可以看到它moment_1是一个对象(!)而不是一个函数.相关线路:1,2
最后,问题与TypeScript无关.问题是systemjs不保留momentjs导出函数的信息.Systemjs只是从模块中复制导出对象的属性(函数也是JavaScript中的对象).我想你应该在systemjs存储库中提出一个问题,看看他们是否认为它是一个bug(或一个功能:)).
Phi*_*ier 14
从版本2.13开始,时刻包括Typescript类型.无需再使用tsd(或typings).
在systemjs.config.js文件中,只需添加以下内容:
var map = {
// (...)
moment: 'node_modules/moment',
};
var packages = {
// (...)
moment: { main: 'moment.js', defaultExtension: 'js' },
};
Run Code Online (Sandbox Code Playgroud)
在模块中:
import moment = require('moment')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33165 次 |
| 最近记录: |