首页 > 解决方案 > 在类型或接口中混合动态和静态对象键

问题描述

我需要这样的东西:

interface IMyInterface {
    Payload?: object;
    [key: string]: boolean | string | number | Date;
}

但是上面的代码给了我以下错误

“对象”类型的属性“有效负载”| undefined' 不能分配给字符串索引类型'string | 号码 | 布尔值 | 日期'。

interface有没有办法通过or实现我想要的类型type

标签: typescript

解决方案


在您的示例中:您在 IMyInterface: 定义中的第二行[key: string]: boolean | string | number | Date;表明,所有字段都是类型boolean | string | number | Date

您可以使用联合类型定义的是:

type MyType =
    {[key : string]: boolean | string | number | Date} & { Payload?: object}

推荐阅读