【发布时间】: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