使用Keyof Type操作符获取一个类型的键



我有这个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"]

相关内容

  • 没有找到相关文章

最新更新