gpt4 book ai didi

typescript - 确保字符串文字联合属于对象的键

转载 作者:行者123 更新时间:2023-12-05 03:48:27 24 4
gpt4 key购买 nike

export type A = "a" | "b" | "c";

const obj = { a: 4, b: 5, c: 6, d: 7 };

如何确保 A 的所有元素都是对象 obj 的键?

最佳答案

根据你的需要,你可以自动构造你的类型:

所有键作为一种类型

您可以使用 keyof 将所有键作为一个联合体。自 keyof需要在类型上使用,keyof typeof obj :

const obj = { a: 4, b: 5, c: 6, d: 7 };

export type A = keyof typeof obj; // "a" | "b" | "c" | "d"

Playground Link

删除一些键

然后您可以 Exclude 一些 key 并获得其余的:

const obj = { a: 4, b: 5, c: 6, d: 7 };
type AllKeys = keyof typeof obj;
export type A = Exclude<AllKeys, "d">; // "a" | "b" | "c"

Playground Link

AllKeys type 只是为了方便,你可以内联它并使用 Exclude<keyof typeof obj, "d">

只允许部分键

这与 Exclude 有点相反- 而不是将 key 列入黑名单,您有一个白名单,并且只使用 an intersection 选择其中存在的 key :

const obj = { a: 4, b: 5, c: 6, d: 7 };
type AllKeys = keyof typeof obj;
type AllowedKeys = "a" | "b" | "c" | "y" | "z";
export type A = AllKeys & AllowedKeys; // "a" | "b" | "c"

Playground Link

同样,两种类型 AllKeysAllowedKeys在这里是为了方便。你也可以有相同的 keyof typeof obj & ("a" | "b" | "c" | "y" | "z");

关于typescript - 确保字符串文字联合属于对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64377179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com