2017-09-01 15 views
0

Je crée des données de test et je ne veux pas passer par les tracas de l'écriture manuelle de mes objets de test typés. Je préfère fournir JSON et les transtyper dans un tableau d'objets DefinitelyTyped dans mon cas. Comment puis-je accomplir cela?Comment faire pour convertir JSON en un type DefinitelyTyped?

Je suis en train de faire ce qui suit, mais il est encore revenir comme 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" 
    } 
    } 
]}`); 

Répondre

1

outputData seront tapés fhir.BundleEntry[] dactylographiée. Au moment de l'exécution, il sera toujours objet. Casting dans Typescript indique seulement au compilateur que vous savez que la bande de l'objet sera la même que la classe que vous lancez. Votre problème est que je ne pense pas que la chaîne json que vous fournissez là est conforme au type que vous avez lancé, il semble avoir la forme suivante { entry:fhir.BundleEntry[] } (en supposant que les éléments dans les entrées ont la même forme que fhir.BundleEntry. vous devriez les chats comme ceci:

const outputData = <{ entry:fhir.BundleEntry[] }> JSON.parse('{ .. }')