我正在使用momentjs
和moment-range
使用Typescript,因此我从moment-range
安装了npm @types
的打字输入,并且momentjs
的输入随附它
import * as moment from 'moment';
import 'moment-range';
...
private tableDatePeriod: moment.Range;
但是在编译时我收到此错误 - [ts] Module 'moment' has no exported member 'Range'.
答案 0 :(得分:1)
试试这个
import * as moment from 'moment';
import { default as DateRange } from 'moment-range';
let Range=new DateRange(dayFrom, dayTo);
Range.toArray('days');
let DatesArray=[];
diffDatesArray.push(moment(some_prop_from_array._d).format("YYYY-MM-DD"));
答案 1 :(得分:0)
以下适用于我的版本:
问题是moment-range.js
没有为范围功能导出任何新实体,它扩展了moment
类型的范围功能。因此,应从moment
导入这些功能。
import {Moment, Range, range as RangeConstructor} from "moment";
此导入从moment-range
加载 moment
个功能。在此示例中,我导入Range
接口和range
工厂方法(以创建/构造范围)。
这应该足够了,但是如果您使用某种类型的AMD或类似的依赖项,则应加载moment-range
模块(使用AMD术语需要)。
以下是为我工作的黑客攻击:
import DateRange = require("moment-range");
DateRange;
第一次导入包括moment-range
模块作为当前模块的依赖项,因此首先根据需要加载它。
第二行不执行任何操作,但TypeScript编译器会删除未使用的依赖项,因此必须以某种方式调用以前导入的依赖项,以避免此类编译器优化。
在提及您的问题时,您现在可以实例化变量:
private tableDatePeriod: Range;
并初始化:
tableDatePeriod = RangeConstructor('2016-01-09', '2016-01-10');