从@types类型修改TypeScript类型别名

时间:2018-09-26 17:52:32

标签: javascript node.js 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'

由于@ types / json-schema显然在其定义中进一步使用了JSONSchema4TypeName,因此有没有办法在我自己的类型定义中修改该类型别名并更新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[];
}

然后我从我的定义而不是json-schema中导入JSONSchema4,这似乎在增加技术负担,所以想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

您不能使用扩充来覆盖类型别名。您唯一的其他选择是在项目中派生@types/json-schema包;请参见this answer,了解实现此操作的可能方法。