2016-12-29 4 views
5

これがなぜ機能しないのか、またはフォーマット機能をサポートするためにデュレーションインタフェースを拡張することができますか?moment-duration-format.d.tsモーメントモジュールを拡張しない定義

declare module 'moment' { 
    interface Duration { 
     format(template: string, precision?: string, settings?: any): string; 
    } 

} 

として使用する場合:外

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

moment.duration(minutes, 'minutes').format('mm'); 

私は

答えて

4

輸入を 'フォーマットは、' タイプ '期間' に存在しないというエラーを取得していますあなたのクラスの、インターフェイスを定義してください:

次に、あなたのコード内
interface Duration extends moment.Duration { 
    format: (template?: string, precision?: number, settings?: DurationSettings) => string; 
} 

interface DurationSettings { 
    forceLength: boolean; 
    precision: number; 
    template: string; 
    trim: boolean | 'left' | 'right'; 
} 

:あなたは別のファイルにあなたのDurationインタフェースを定義した場合

const duration = moment.duration(minutes, 'minutes') as Duration; 
return duration.format('mm'); 

、あなたはエクスポートし、同様にそれをインポートする必要があります。

+0

を使用することができます。プロパティ 'duration'は型 'typeof' moment ''には存在しません。 –

+0

エラーの原因をよりよく理解するために、コードを調べる必要があります。しかし、私の答えを見て、インターフェイスの定義を更新しました。私はそれがあなたの問題を解決するとは思わないが、一度修正すると、より良いオートコンプリートを提供します。 – fxlemire

+0

魅力的な作品です!ありがとう – Madman

2

まず、タイプのインストール:

npm install --save-dev @types/moment-duration-format 

第二に、あなたのファイルでそれらをインポートします。

/// <reference path='../..your-path.../node_modules/@types/moment-duration-format/index.d.ts' /> 
import * as moment from 'moment'; 
import 'moment-duration-format'; 

その後、あなたは、私はまだ私のコードのエラーを取得してい

moment.duration(minutes, 'minutes').format('mm'); 
+0

'npm install --save-dev @ types/moment-duration-format'は私の問題を解決しましたが、' npm install moment-duration-format'は問題を解決しました。 – samthui7

関連する問題