typescript TS:对象键的任意子集

k10s72fa  于 2023-06-07  发布在  TypeScript
关注(0)|答案(1)|浏览(178)

Table接口:

interface Table<O extends object, F extends keyof O> {
  fields: F[];
  rows: Record<F, {}>[]
}

也就是说,对于fields的每个元素,在每个row中都存在一个同名的属性。
这一切都很好,问题是,F将只在运行时声明,所以我想设置如下

F = Partial<keyof O>

这意味着rows不包括O的每个键,但至少包括fields数组中的键。
但这是行不通的:现在fieldsO的键的子集,但是rows包括O的每个键。
那么我如何实现:*F = O的任意但未知的密钥子集 *?然后,只有当keyfields内部时,我才能推导出[key]row的属性。

g9icjywg

g9icjywg1#

如果我没理解错的话你需要

interface Table<O extends object, F extends keyof O> {
  fields: F[];
  // every F is present, everything else is optional
  rows: Pick<O, F> & Partial<O>
}

相关问题