要表明一个属性不仅是类型的“keyof”,而且还是某种东西的数组,可以使用类型操作符和泛型来实现。
以下是一个示例代码:
type ArrayKeys = {
[K in keyof T]: T[K][]
}
interface Person {
name: string;
age: number;
hobbies: string[];
}
type PersonArrayKeys = ArrayKeys;
// PersonArrayKeys的类型为:
// {
// name: string[];
// age: number[];
// hobbies: string[][];
// }
在上面的示例中,我们定义了一个ArrayKeys
类型,它接受一个泛型类型T
。使用keyof T
来迭代T
的所有属性,并将每个属性的类型改为对应的数组类型T[K][]
。
然后,我们定义了一个Person
接口,其中包含了name
、age
和hobbies
三个属性。使用ArrayKeys
来获取Person
接口的属性类型,并将其赋值给PersonArrayKeys
变量。
最终,PersonArrayKeys
的类型为一个包含了name
、age
和hobbies
三个属性的对象,每个属性的值都是对应属性类型的数组。
这样,我们就可以通过PersonArrayKeys
类型来表明一个属性不仅是类型的“keyof”,而且还是某种东西的数组。