相关疑难解决方法(0)

使用不同类型的属性扩展 `Record<string, string[]>`

在 Typescript 中,以下内容似乎应该完成所需类型的创建:

interface RecordX extends Record<string, string[]> {
  id: string
}
Run Code Online (Sandbox Code Playgroud)

但这抱怨:

“string”类型的属性“id”不可分配给字符串索引类型“string[]”。ts(2411)

如何将不同类型的属性添加到Record<>实用程序类型?

详细信息和一般案例 + 示例

通常,如何描述具有异构值类型固定属性但动态添加同质值类型属性的对象。

S,例如给定这个对象:

const a = {
   // some properties with known "hard-coded" types
   id: '123',
   count: 123,
   set: new Set<number>(),

   // and some dynamic properties
   dynamicItemList: ['X', 'Y']
   anotherDynamicallyAddedList: ['Y', 'Z']
} as ExtensibleRecord
Run Code Online (Sandbox Code Playgroud)

那么如何定义类型或接口ExtensibleRecord,其中:

  1. 的类型和属性键idcountset被固定为stringnumberSet<number>
  2. 添加到对象的dynamicItemListanotherDynamicallyAddedList和任何其他属性的类型是string[]

我尝试了许多我认为可能有效的变体,包括:

type ExtensibleRecord = { …
Run Code Online (Sandbox Code Playgroud)

typescript

10
推荐指数
2
解决办法
4954
查看次数

标签 统计

typescript ×1