如何使用可选的唯一字符串定义数组打字稿接口?

zem*_*mil 2 typescript typescript-typings

我想定义一个带有可选字符串值的接口。就像是:

interface IEntity {
    values: ['RemainingUnits', 'ActualUnits', 'PlannedUnits']
}
Run Code Online (Sandbox Code Playgroud)

但使用这个界面我遇到了问题:

const entity0: IEntity = { values: ['PlannedUnits'] }; // => Error
const entity1: IEntity = { values: ['RemainingUnits', 'ActualUnits'] }; // => Error
const entity2: IEntity = { values: ['PlannedUnits', 'RemainingUnits', 'ActualUnits'] }; // => Error
Run Code Online (Sandbox Code Playgroud)

那么有没有办法编写正确的接口来避免上述错误呢?

并且完美地没有重复的字符串并且不为空

Gil*_*nti 5

或许:

type Units = 'RemainingUnits' | 'ActualUnits' | 'PlannedUnits';

interface IEntity {
  values?: Units[];
}
Run Code Online (Sandbox Code Playgroud)