有没有人使用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 moment
和npm 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请求。
答案 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');