在 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,其中:
id,count和set被固定为string,number和Set<number>dynamicItemList和anotherDynamicallyAddedList和任何其他属性的类型是string[]我尝试了许多我认为可能有效的变体,包括:
type ExtensibleRecord = { …Run Code Online (Sandbox Code Playgroud) typescript ×1