typescript - 联合类型作为界面中的关键?

标签 typescript

是否可以使用联合类型作为接口(interface)中的键?例如,我想做这样的事情:

interface IMargin {
  [key in 'foo' | 'bar']: boolean;
}

但是我收到了这个错误:

A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.ts(1169)

有什么办法解决这个问题吗?

用例是将值数组转换为接口(interface):

const possibleTypes = ['foo', 'bar'];
interface Types {
    foo?: boolean;
    bar?: boolean;
}

最佳答案

您可以使用对象类型而不是接口(interface),这在大多数情况下是可以互换的:

type IMargin = {
    [key in 'foo' | 'bar']: boolean;
}

关于typescript - 联合类型作为界面中的关键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023610/

相关文章:

angular - 我可以在 Angular 模板中进行类型缩小吗?

typescript - 从长字符串中删除特定字符 Typescript

typescript - 如何检查是否提供了可选参数?

javascript - ES7 Map JSON 添加方括号

typescript - 缩小 typescript 中的通用类型

angular - Ionic 2 - 加载 Controller 不起作用

angular - 在 Angular 6 中初始化应用程序之前获取所需数据

javascript - Angular 2 路由异步解析不会保留导航位置

javascript - "in"使用字符串枚举时检查返回 false

angularjs - 嵌入 ngx-monaco-editor 时没有 InjectionToken 提供者