你如何使用Twix(momentjs)与Typescript

时间:2016-10-02 02:13:08

标签: typescript momentjs

有没有人使用twix和打字稿,可以分享你是如何运作的?

我有:

import * as moment from 'moment';
import * as twix from 'twix';

瞬间工作正常,智能感知和一切。 Twix模块导入很好,如果我键入twix。我可以看到界面弹出。

但我明白了:

  

Moment上不存在属性twix

当我尝试使用moment(date).twix()

修改 我还试过let twix = require('twix');import twix = require('twix');但没有成功。

编辑2 我运行了npm install momentnpm install twix以及npm install @types/twix

我知道片刻已安装且工作正常。 正在使用的打字文件是当前npm包中包含的moment.d.ts文件。

用于twix的打字文件位于@ types / twix npm包中。

在我导入之后,如果我输入let t = twix.,那么intellisense会弹出Twix,TwixFormatOptions,TwixIter,TwixParseAndFormatOptions等等,所以我认为typescript正在识别twix类型。

最终修复

github issue解释了扩展momentjs的包的类型被破坏的根本原因,并引用了一旦合并后将永久修复它的pull请求。

4 个答案:

答案 0 :(得分:2)

尝试更换:

import * as twix from 'twix';

使用:

let twix = require('twix');

根据我的理解,Twix是作为CommonJS模块而不是ES6模块编写的,因此导入方法不同。

关于差异的更多信息here

编辑:似乎有两种类型的twix输入错误。解决方法是从github获取2.0之前的twix类型的副本,并将其添加到您的项目中。

答案 1 :(得分:1)

  

Moment上不存在属性twix

您需要为当前不存在的twix创建类型定义。

修复

你可以断言any,就像你正在编写未经检查的javascript:

(moment(date) as any).twix()

有关断言的更多信息:https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html

正确修复

您需要定义增强 momentjs定义。这是一些工作,建议阅读打字稿规范。

答案 2 :(得分:0)

使用Angular4和angular-cli,这已经发生了变化。你现在可以这样做:

var moment = require('moment');
require('twix');

import * as moment from 'moment';
require('twix');

然后当你编写代码时,你会正常写它,如下:

    public t = moment('2016-12-30T09:30').twix(moment()).count('weeks');

答案 3 :(得分:0)

您需要做的就是安装@types/twix npm模块。

npm install --save @types/twix

import * as moment from 'moment';
require('twix');