You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建带可选属性且支持任意额外属性的TypeScript泛型类型?

解决方案

要让stuff数组的元素既保留optionalStuff可选属性,又能接受任意其他属性,你可以在对象类型中添加字符串索引签名,具体写法如下:

interface SomeProps {
  stuff: {
    optionalStuff?: object[];
    // 允许任意字符串键的额外属性,值类型设为unknown(比any更安全)
    [key: string]: unknown;
  }[];
}

说明

  • 索引签名[key: string]: unknown表示该对象可以包含任意数量的字符串类型键,对应的值类型为unknown(你也可以根据需求换成string | number | object | undefined等更贴合场景的联合类型)。
  • 这个写法能兼容已定义的optionalStuff属性,因为unknown类型包含了object[] | undefined的类型范围。
  • 如果需要允许数值类型的键,不用额外声明——TypeScript会自动将对象的数值键转换为字符串键处理,所以字符串索引签名已经覆盖这种情况。

内容的提问来源于stack exchange,提问作者pmpc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:55:19