【问题标题】:Avoid defining object value type with generics避免使用泛型定义对象值类型
【发布时间】:2020-12-27 16:38:56
【问题描述】:

让我们有以下类型示例,我希望能够定义我的自定义对象,其中键是标志名称,值是标志主体。

interface FlagModel {
    value: boolean;
}

interface GenericFlagsModel<T extends Record<string, FlagModel>> {
    flags: T
}

enum FLAG_NAMES {
    FLAG_FOO = 'flag-foo',
    FLAG_BAR = 'flag-bar'
}


type CustomFlagsModel = GenericFlagsModel<{
    [FLAG_NAMES.FLAG_FOO]: FlagModel,
    [FLAG_NAMES.FLAG_BAR]: FlagModel
}>

查看CustomFlagsModel 可以看到我需要将FlagModel 显式定义为一个值。有可能避免这种情况吗?比如像:

type CustomFlagsModel = GenericFlagsModel<{
    [FLAG_NAMES.FLAG_FOO],
    [FLAG_NAMES.FLAG_BAR]
}>

【问题讨论】:

    标签: typescript typescript-generics


    【解决方案1】:

    以下是否符合您的需求?

    type CustomFlagsModel = GenericFlagsModel<Record<FLAG_NAMES, FlagModel>>
    

    【讨论】:

    • 我发现你不需要为此使用 OR。枚举就足够了。 Record&lt;FLAG_NAMES, FlagModel&gt;
    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多