我有这个Identity接口
export interface Identity {
username: string;
name: string;
surname: string;
roles: string[];
}
,我想在运行时得到一个包含所有键的字符串数组
const keys: string[] = ["username", "name", "surname", "roles"];
如果它是一个类,那么使用构造函数(如这里所建议的)就足够容易了。
class Identity {
constructor(
readonly username?: string,
readonly name?: string,
readonly surname?: string,
readonly roles?: string[]
) {}
}
const properties: string[] = Object.keys(new Identity());
我发现了其他类似的问题,一些关于Keyof类型操作符,最相关的是:
- 打印稿接口作为数组的键的字符串 Typescript将' interface '键扩展为字符串的并集
然而,在上面的问题中,keyof的结果仅用作类型/值约束。如何使用keyof操作符获得键作为字符串数组?这是不可能从接口定义或类吗?
TypeScript自定义Transformer
这个项目,一个自定义的转换器,做了我正在寻找的:获得给定类型的键。
我想知道是否有一种更简单的方法,可能只使用keyof操作符来获得相同的结果。
例如接口这样的:
export interface Identity {
username: string;
name: string;
surname: string;
roles: string[];
}
您想提取键。没有直接的方法,但是你可以这样做:
const extractedKeys: Array<keyof Identity> = 'username','name','surname'];
输出应该像这样
["username", "name", "roles"]