首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >momentjs和moment-range的Typescript类型不能一起使用

momentjs和moment-range的Typescript类型不能一起使用
EN

Stack Overflow用户
提问于 2016-10-21 00:30:09
回答 2查看 896关注 0票数 0

我使用的是带有Typescript的momentjsmoment-range,所以我已经从npm @types安装了moment-range的类型,momentjs的类型也附带了。

代码语言:javascript
复制
import * as moment from 'moment';
import 'moment-range';
...
private tableDatePeriod: moment.Range;

但是在编译时,我得到了这个错误- [ts] Module 'moment' has no exported member 'Range'.

EN

回答 2

Stack Overflow用户

发布于 2016-12-10 02:27:40

尝尝这个

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-01-10 00:25:37

以下内容适用于我的版本:

  • moment: 2.17.1
  • moment-range: 2.2.0
  • @types/moment-range: 2.0.33

问题是moment-range.js没有为range功能导出任何新实体,它使用range功能扩展了moment类型。因此,这些功能应该从moment导入。

代码语言:javascript
复制
import {Moment, Range, range as RangeConstructor} from "moment";

此导入从moment加载moment-range功能。在本例中,我导入了Range接口和range工厂方法(以创建/构造范围)。这应该足够了,但如果您正在使用某种类型的AMD或类似的依赖关系,则应该加载moment-range模块(需要使用AMD术语)。以下是适用于我的技巧:

代码语言:javascript
复制
import DateRange = require("moment-range");
DateRange;

第一次导入包含moment-range模块作为当前模块的依赖项,因此首先会根据需要进行加载。第二行什么也不做,但是TypeScript编译器删除了未使用的依赖项,因此必须以某种方式调用以前导入的依赖项,以避免这种编译器优化。

根据您的问题,您现在可以实例化该变量:

代码语言:javascript
复制
private tableDatePeriod: Range;

和初始化:

代码语言:javascript
复制
tableDatePeriod = RangeConstructor('2016-01-09', '2016-01-10');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40159801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档