扩展递归 Typescript 接口

Extending recursive Typescript interfaces

我正在为 JSON 架构使用 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。这可能吗?

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

interface JSONSchema4 {
  instanceof?: string;
}