我使用的第三方库已定义了这样的类型:
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数组?
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'];