TypeScript(Ionic2/Angular2)プロジェクトでmoment.jsを使用しています。 この投稿 に続いて、プラグインを試してみたい moment-duration-format
Npmパッケージとタイプ定義があり、インポートとして使用できます。
import moment from 'moment';
...
let duration = moment.duration(decimalHours, 'hours');
moment-duration-format を使用したい
npm install moment-duration-format --save
を介してインストールし、次にnpm i @types/moment-duration-format --save
を介して型定義をインストールしました。
私は両方のnpmモジュールを見ることができます。
いつものように、そのような型定義の使用方法には常にいくつかの謎があります(インポートを含む使用法がどの文書にもないようです)。
import 'moment-duration-format';
、import duration from 'moment-duration-format';
を追加してみました(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でこれを使用する方法について誰かが何か考えを持っていますか?.
前もって感謝します
回避策 here を使用していましたが、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);
duration
を呼び出すのではなく、プロパティとして使用しています。試してください:
let dd = moment.duration(400.99, 'hours').format('D:HH:mm');
これは実際にはTypeScriptの問題ではありません。 JavaScriptでも動作しません。 JavaSctriptでは、ランタイム時にエラーが発生しますが、TypeScriptではコンパイル時に実行できません(その価値があることが証明されます)。
私は同じ問題を抱えています...
型定義に誤りがあるようです。他にも同じ問題があります: https://github.com/souldreamer/noti-cli/blob/ef104c22792e0dfeb67d3372b04e231d45ffaa55/src/shared/pipes.ts#L38
Githubのプルリクエストの一部として問題が修正されましたが、残念ながらマージせずにクローズされました: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/14327
一時的な回避策として、最初のリンクのコード行を使用できます。 2番目のステップとして、将来のリリースで問題を修正するために、githubで新しいプルリクエストを作成する必要があります。
問題は、R-B_がモーメント期間フォーマットの型付けモジュールで誤った型定義を正しく処理したためです。
Lintエラーのために最後のリクエストが閉じられたので、これに対して新しいプルリクエストを作成します。
ここまでのように、プロジェクトでカスタムタイプ定義を使用できる限り、 https://github.com/TwoStone/leaderboard/blob/develop/subprojects/webapp/src/custom-typings.d.ts =プロジェクトでファイルを作成するだけで、当面は機能するはずです。