首页 > 解决方案 > 联合类型作为界面中的键?

问题描述

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

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

但我收到了这个错误:

接口中的计算属性名称必须引用其类型为文字类型或“唯一符号”类型的表达式。ts(1169)

有没有办法解决?

用例是将一组值转换为接口:

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

标签: typescript

解决方案


您可以使用对象类型而不是接口,它们大多是可互换的:

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

推荐阅读