【问题标题】:Extending recursive Typescript interfaces扩展递归 Typescript 接口
【发布时间】:2021-10-14 14:55:57
【问题描述】:

我正在为 JSON Schema 使用 TS 类型:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/json-schema/index.d.ts

短版:

interface JSONSchema4 {
  properties?: {
    [k: string]: JSONSchema4;
  } | undefined;
}

这种类型是递归的。我想用自定义属性扩展这种类型。例如。目前,类似这样的内容与类型不匹配:

{ instanceof: 'Date' }

我想将instanceof?: string 作为字段添加到JSONSchema4。这可能吗?

【问题讨论】:

  • instanceof 是一个保留字,不过你也许可以把它放在引号里……'instanceof': ...
  • 但是如何扩展递归类型呢?
  • 我认为您必须扩展接口并替换接口中可以为JSONSchema4类型的所有属性以引用您自己的接口类型。它不漂亮,但这是我唯一能想到的东西
  • this code 是否满足您的需求?如果是这样,我可以写一个答案;如果没有,请edit 你的例子来展示一个失败的用例。告诉我。

标签: javascript typescript jsonschema


【解决方案1】:

在 TypeScript 中,接口是开放的,与封闭的类型不同。因此,您可以简单地通过声明一个包含您的关键字的同名接口来添加您的关键字。该接口有效地扩展了原始类型。

interface JSONSchema4 {
  instanceof?: string;
}

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2020-10-30
    • 2020-06-09
    • 2016-07-06
    • 2017-10-21
    • 2020-04-09
    • 2018-06-20
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多