首页 > 解决方案 > 将动态属性添加到具有已知属性的类型别名

问题描述

我想定义一个像这样的类型别名:

export type Context = object & {
    tag: string
}

使用该类型时,我还希望能够像这样动态添加属性:

常量上下文:上下文={标签:'一些标签',动态属性:1}

我收到此错误(我完全理解):

对象字面量只能指定已知属性,而“上下文”类型中不存在“动态属性”。

有没有办法允许动态添加属性?

我试过这个

export type Context = any & {
    tag: string
}

但从 TS 编译器的角度来看,这将是有效的:

const context: Context = {
    //tag: 'some-tag', // tag is not set which shouldn't be allowed
    dynamicProperty: 1
}

TS游乐场

标签: typescript

解决方案


您可以简单地在 的类型声明中添加索引签名以Context允许更多键值对:

export type Context = {
    tag: string,
    [k: string]: any;
}

TS游乐场


推荐阅读