2017-09-04 11 views
2

私のAngular/Typescript2.2プロジェクトでは、開発のために、コンポーネントのテストデータとして*.jsonファイルを随時インポートします。モジュールとして.jsonファイルをインポートできるようにするには 、私はタイプanyでフィールドにこれらのファイルの内容を割り当てることができますtypings.d.tsもちろん角度/ Typescript - モジュール定義のためにインポートされた '* .json'ファイルを作成できません

declare module '*.json' { 
    const value: any; 
    export default value; 
} 

に以下を追加しましたが、私はフィールドにそれらを割り当てます代わりに私のインターフェイスの1つのタイプで。モジュール定義の値をすべてのタイプに開いたままにしておきたいことに注意してください。私は1つのインターフェイスにハードコードしたくありません。

import {ProcessMilestone} from '../../../domain'; 
import * as milestones from './test.json'; 

export class MilestoneSearchComponent implements OnInit { 
    data: ProcessMilestone[]; 

    ngOnInit(): void { 
     this.data = <ProcessMilestone[]> milestones; 
    } 
} 

これは私に次のエラーを与える:

Type 'typeof '*.json'' cannot be converted to type 'ProcessMilestone[]>'. Property 'includes' is missing in type 'typeof '*.json''.

それが原因「* .json」の現在のモジュールの定義により明らかだが、キャストはできません。これが可能になるようにこれを微調整することは可能ですか?私は可能性については考えていない。

最小労力のソリューションが実行可能です。そうでない場合は、代わりにバックエンドからデータを取得します。

答えて

3

実行中の作業は何ですか?もしそうなら、あなたは常にanyを通過することにより、型アサーションを許可するように活字を強制することができます:私は考えることができるよう、最小限の労力だ

this.data = <ProcessMilestone[]> <any> milestones; 

を。もちろん、JSONファイルに正しいタイプのオブジェクトが含まれていないことが判明した場合は、タイプアサーションによって強制的に強制されたTypeScriptからの警告なしで、実行時に爆発します。

+0

魅力のように機能し、実際にはごくわずかです!ダブルタイプアサーションを試みたことはありません。ありがとう! –

関連する問題