我有以下内容:
type CommandTypes = 'one' | 'two' | 'three';
const CONST = {
commands: {
a: 'one',
b: 'two',
c: 'error'
},
};
是否有一种方法可以强制所有命令都属于特定类型?
现在TypeScript告诉我 a , b 和 c 类型为 string ,但是我想将这些属性强制为 CommandTypes 类型,以便开发人员无法指定任意字符串。我希望TypeScript能够捕获 c 无效的错误,因为它不属于允许的CommandType。
如果我用这种方式分解CONST定义:
type CommandTypes = 'one' | 'two' | 'three';
const commands : CommandTypes = {
a: 'one',
b: 'two',
c: 'error'
}
const CONST = {
commands,
};
这实际上确实捕获了 c 错误,但是现在我也失去了Visual Studio代码中的自动完成功能。如果我键入 CONST.commands。。我现在在这里没有任何自动完成功能,就像我将定义保留在帖子顶部所示的那样,那么我确实获得了自动完成功能。>
答案 0 :(得分:1)
Record<CommandTypes, string>
将为您提供一个对象,其键是CommandType的分布式联合,其值必须为字符串。注意:如果您想为每个键使用不同的类型,则只能在右侧使用一种类型,而必须阅读有关映射类型的打字稿文档