【问题标题】:Modify a TypeScript type alias from @types type从 @types 类型修改 TypeScript 类型别名
【发布时间】:2019-03-02 13:48:18
【问题描述】:

使用 Typescript 3,我使用了来自definitelyTyped 的定义,但我需要编辑类型别名。我将@types/json-schema 用于易于使用的 TS 定义。但是因为我想添加一个自定义模式类型,所以当我有一个不是定义类型之一的类型时,它显然会抱怨。例如,我有这个架构:

{
    properties: {
        foo: { type: 'myCustomFormat' }
    },
    required: [
        'foo'
    ],
    type: 'object'
}

当然myCustomFormat 不是有效的 json 模式类型。 @types/json-schema 通过以下方式定义这些类型:

export type JSONSchema4TypeName = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null' | 'any'

有没有办法在我自己的类型定义中修改该类型别名并更新JSONSchema4TypeName 的所有用途,因为@types/json-schema 显然在其定义中进一步使用JSONSchema4TypeName?所以就像我想做的那样:

import { JSONSchema4TypeName } from 'json-schema';

export type JSONSchema4TypeName = JSONSchema4TypeName | 'myCustomFormat';

我能做的最接近的是:

import { JSONSchema4, JSONSchema4TypeName } from 'json-schema';

export type JSONSchema4TypeName = JSONSchema4TypeName | 'uuid';

export interface JSONSchema4 {
    type?: JSONSchema4TypeName | JSONSchema4TypeName[];
}

我从我的定义中导入 JSONSchema4 而不是 json-schema,感觉它会产生技术债务,所以想知道是否有更好的方法。

【问题讨论】:

    标签: javascript node.js typescript


    【解决方案1】:

    您不能使用扩充来覆盖类型别名。您唯一的其他选择是在您的项目中分叉 @types/json-schema 包;请参阅this answer 了解可能的方法。

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2016-12-29
      • 2016-09-29
      • 2019-01-03
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      相关资源
      最近更新 更多