时刻范围插件的打字稿错误

时间:2016-05-19 07:51:36

标签: typescript ionic2

我在我的Ionic 2应用中添加了moment jsmoment-range插件,如下所示:

import * as moment from 'moment';
import 'moment-range';

这很好用,我可以同时使用它们,但是Typescript给了我以下错误:

使用Javascript:

let range = moment().range(self.weekStart, self.weekEnd);

打字稿错误:

Error TS2339: Property 'range' does not exist on type 'Moment'.

我已运行以下命令尝试通过安装打字文件来停止此错误:

typings install moment-range --ambient --save

但它似乎没有任何影响。还有其他我需要做的事情,还是有办法消除错误?

感谢您的帮助。

5 个答案:

答案 0 :(得分:4)

我必须这样做:

import * as moment from "moment";
import {extendMoment} from "moment-range";
const rangeMoment = extendMoment(moment);
const range = rangeMoment.range(start, end);

答案 1 :(得分:1)

我只是看了接口。你需要打电话

let range = moment.range(self.weekStart, self.weekEnd);

不是moment().range

如果查看moment-range.d.ts,您会看到范围方法是在静态接口MomentStatic上定义的,而不是实例接口Moment

答案 2 :(得分:1)

我无法让Paarth解决方案起作用。我还有:

Property 'range' does not exist on type 'typeof moment'.

我的解决方案是使用类型断言:

let range = (<any>moment).range(startDate, endDate);

答案 3 :(得分:1)


    //Read all text from file into a string
    var fileContent = File.ReadAllText("001234.txt");

    //split text into array according to a Regex pattern
    var pattern = @"SOH*ETX";
    var splitContent = Regex.Split(fileContent, pattern);

    //counter for file names
    var counter = 10;
    foreach(var content in splitContent)
    {
        //create file and use stream to write to it
        using (var stream = File.Create($"{counter++}1234.txt"))
        {
            var contentAsBytes = new UTF8Encoding(true).GetBytes(content);
            stream.Write(contentAsBytes, 0, contentAsBytes.Length);
        }
    }

答案 4 :(得分:0)

他们只有这样才能让我在“打字稿”中使用它:“ 3.4.5”

const Moment = require('moment');
import {extendMoment} from 'moment-range';

const moment = extendMoment(Moment);