2017-09-01 4 views
0

私はいくつかのテストデータを作成しています。手動で入力したテストオブジェクトを手間をかけずに使いたいと思っています。私はむしろJSONを提供して、私のケースではDefinitelyTypedオブジェクト配列にキャストします。どうすればこれを達成できますか?JSONをDefinitelyTyped型にキャストする方法は?

私は、次の操作を実行しようとしているが、それはまだObjectとして戻って来ている:

const outputData = <fhir.BundleEntry[]>JSON.parse(`{"entry": [ 
    { 
    "fullUrl": "https://vonk.furore.com/Patient/1", 
    "resource": { 
     "resourceType": "Patient", 
     "id": "1", 
     "meta": { 
     "versionId": "b345396d-f3b6-46ce-8ceb-0b5c0dafab2e", 
     "lastUpdated": "2017-06-20T07:28:54.979+00:00" 
     }, 
     "identifier": [ 
     { 
      "type": { 
      "coding": [ 
       { 
       "system": "http://hl7.org/fhir/v2/0203", 
       "code": "SS" 
       } 
      ] 
      }, 
      "system": "https://github.com/projectcypress/cypress/patient", 
      "value": "577492" 
     } 
     ], 
     "active": true, 
     "name": [ 
     { 
      "use": "official", 
      "family": "Copeland", 
      "given": [ 
      "Brian" 
      ] 
     } 
     ], 
     "gender": "male", 
     "birthDate": "1949-03-15", 
     "managingOrganization": { 
     "reference": "Organization/1" 
     } 
    }, 
    "search": { 
     "mode": "match" 
    } 
    } 
]}`); 

答えて

1

outputDataは活字体でfhir.BundleEntry[]に型付けされます。実行時には依然としてオブジェクトになります。 Typescriptでのキャストは、オブジェクトのsapeがキャスト先のクラスと同じであることをコンパイラに知らせます。

あなたが提供しているjson文字列が、キャストした型に準拠していないと思われます。{ entry:fhir.BundleEntry[] }の形をしているようです(エントリの要素はfhir.BundleEntryと同じです。あなたはこのような猫です:

const outputData = <{ entry:fhir.BundleEntry[] }> JSON.parse('{ .. }') 
関連する問題