我对打字稿很新,很难找到关于keyof
的大量文档。如果你有
export interface someClassProps<T extends object> {
/*
Lets assume T look is an object that looks something like:
T = {"name": "",
"val": NaN,
"active": false}
*/
A: Array<T>; // an array of objects
B: keyof T; // What type is this? Is just a type of object or is it the keys of T?
C: keyof Array<T>[0]; // Is this the keys of T?
D: keyof Array<T> // Is this type object?
}
您为B
或C
获得的是哪种类型?我希望得到keyof
的{{1}}类型。name | val | active
。我在寻找一种看似B
,C
或完全不同的方法吗?
或者,有一种简单的方法可以从keyof
打印类型吗?这样我就能搞清楚这一点。
答案 0 :(得分:2)
keyof
为您提供给定类型的键的联合类型。例如,如果你有:
export SomeClass implements<{ name: string, val: number, active: boolean}>
...然后B
将为"name" | "val" | "active"
。在这种情况下,C
也是"name" | "val" | "active"
,因为Array<T>[0]
是数组的第0个元素,其中元素T
只是T
。
请注意,使用TypeScript接口的工作方式,implements
只是意味着&#34;检查此实现是否可分配给接口&#34;并且默认情况下并没有实际设置类类型。这意味着如果您愿意,您仍然需要B: "name" | "val" | "active"
。您也可以执行B: "name"
,因为该类型可分配给所有键的联合类型。