是否有可能从字符串文字类型中获取键的数组

问题描述 投票:0回答:1

我使用的第三方库已定义了这样的类型:

type DefaultButtons = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H';

有一个我可以调用的函数,它使我可以删除按钮,并且它具有如下所示的api:

removeDefaultButtons( buttonsToRemove : DefaultButtons[] );

在我的代码中,我知道我想保留(说)'A','D'和'G',但删除所有其余的。

因此,我想做这样的事情:

const buttonsToKeep : DefaultButtons[] = ['A', 'D', 'G'];

const allPossibleButtons : DefaultButtons[] = ?? //how to populate this

const removeButtons = allPossibleButtons.filter( b => buttonsToKeep.includes( b ) );
removeDefaultButtons( removeButtons );

问题是我不确定如何从字符串文字类型填充allPossibleButtons数组?

typescript
1个回答
0
投票

type定义仅在编译时保留。构建打字稿代码后,types没有任何意义。因此,您无法从元数据类型中检索值。

您可以在下面的波纹管游乐场看到,编译类型在代码中没有位置。如果没有为类型生成代码,则无法访问编译时可用的信息。

Typescript

type DefaultButtons = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H';
const buttonsToKeep: DefaultButtons[] = ['A', 'D', 'G'];

已编译的JS

"use strict";
const buttonsToKeep = ['A', 'D', 'G'];
© www.soinside.com 2019 - 2024. All rights reserved.