当然,你可以这样做:
type Dictionary<V> = {[k: string]: V};
const func = <T>(array: (Record<keyof T, any> & Dictionary<any>)[], object: T) => {};
你在做什么
func
一
generic
array
是一种与
object
. 具体来说,它必须是一个
Record<keyof T, any>
,一个
mapped type
它的钥匙和
T
但任何价值观。我还补充道
Dictionary<any>
(一种带有
index signature
)这样你就不会在
(假设您不希望额外键出现错误)。让我们看看它是否有效:
func([{a: 1, b: true}], {a: "hey", b: "you"}); // okay
func([{a: 1}], {a: "hey", b: "you"}); // error, Property 'b' is missing in type '{ a: number; }'
func([{a: 1, b: true, c: "1"}], {a: "hey", b: "you"}); // also okay because of Dictionary