如何将JSON转换为DefinitelyTyped类型?

时间:2017-09-01 11:05:25

标签: typescript typescript-typings 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 个答案:

答案 0 :(得分:2)

outputData将在Typescript中输入fhir.BundleEntry[]。在运行时它仍然是对象。在Typescript中进行转换只会告诉编译器您知道对象的sape将与您要转换的类相同。

你的问题是我不认为你在那里提供的json字符串符合你所投射的类型,它似乎有以下形状{ entry:fhir.BundleEntry[] }(假设条目中的元素具有相同的形状为fhir.BundleEntry。所以你应该像这样的猫:

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