Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在TypeScript中使用瞬间持续时间格式?_Javascript_Angular_Typescript_Momentjs - Fatal编程技术网

Javascript 如何在TypeScript中使用瞬间持续时间格式?

Javascript 如何在TypeScript中使用瞬间持续时间格式?,javascript,angular,typescript,momentjs,Javascript,Angular,Typescript,Momentjs,我正在我的TypeScript(Ionic2/Angular2)项目中使用moment.js。接下来,我想尝试一个插件 我有npm包和类型定义,并且能够通过导入使用 import moment from 'moment'; ... let duration = moment.duration(decimalHours, 'hours'); 我现在想用 我已通过npm install moment duration format--save安装,然后通过npm I@types/moment du

我正在我的TypeScript(Ionic2/Angular2)项目中使用moment.js。接下来,我想尝试一个插件

我有npm包和类型定义,并且能够通过导入使用

import moment from 'moment';
...
let duration = moment.duration(decimalHours, 'hours');
我现在想用

我已通过
npm install moment duration format--save
安装,然后通过
npm I@types/moment duration format--save
安装类型定义

我可以看到两个npm模块

和往常一样,关于如何使用这样的类型定义总是有一些谜团(包括导入在内的用法似乎从未出现在任何文档中)

我尝试添加
import'moment duration format'
从“时刻持续时间格式”导入持续时间(力矩持续时间格式/index.d.ts'不是一个模块。)

我在尝试使用时出错,如下所示

let dd = moment.duration.format(400.99, 'hours').format('D:HH:mm');

// (TS error [ts] Property 'format' does not exist on type '(inp?: DurationInputArg1, unit?: DurationConstructor) => Duration'.
有人知道如何在TypeScript中使用它吗


提前感谢

您将
持续时间
用作属性,而不是调用它。尝试:

let dd = moment.duration(400.99, 'hours').format('D:HH:mm');

这实际上不是一个类型脚本问题。它也不适用于JavaScript。在JavaSctript中,当TypeScript不允许您在编译时执行时,您会遇到运行时错误(证明它的价值)。

我也遇到了同样的问题

似乎类型定义中有错误。其他人的问题与您在此处看到的相同:

github上的pull请求中有一个问题的修复程序,不幸的是,该程序在未合并的情况下被关闭:


作为临时解决方法,您可以使用第一个链接的代码行。作为第二步,我们应该尝试在github上创建一个新的pull请求,以便在将来的版本中修复该问题。

问题在于R_B_________________________________

我将为此创建一个新的pull请求,因为我的上一个请求由于lint错误而关闭

只要您可以像这里一样在项目中使用自定义类型定义
只需在项目中创建文件,它目前应该可以工作。

我正在使用该解决方案,但现在看起来ype def已经修复。正在获取def类型的更新,以便我可以执行以下操作

import * as moment from 'moment';
import 'moment-duration-format';

let duration = moment.duration(decimalHours, 'hours') ;   
let options : moment.DurationFormatSettings   = {
  forceLength : false,
  precision : 0,
  template : formatString,
  trim : false
};
let result  = duration.format(formatString, 0, options);

谢谢,但仍然无法让它工作,因为我不知道如何导入。我从“时刻”导入了
时刻;导入“时刻持续时间格式”
然后尝试上述操作,但我得到的TS错误
[TS]属性“format”不存在于类型“Duration”
。我就是不能让它“看到”这个
时刻持续时间格式
插件。还尝试了从“时刻持续时间格式”导入持续时间但这也不起作用。您需要安装键入定义“@types/moment duration format”和--save dev;)您是如何更新类型定义的?哪个版本?我使用的是最新版本(moment 2.29.1和moment duration format 2.3.2),但仍然存在类型问题。