接口数组

时间:2019-05-29 14:02:40

标签: typescript typescript-typings

例如,假设我有一个定义布尔值和可选字符串的接口:

示例

interface IError {
  error: [boolean, string?];
}

现在稍后在代码中我要使用它:

if (somethingTrue) {
  error: [false]
} else {
  error: [true, "Error occurred because of foo"]
}

我已经开始工作了。但是,我想为接口添加更多上下文。布尔值应命名为errorOccured,字符串应命名为message

尝试

我在考虑以下问题:

interface IError {
  error: [errorOccured: boolean, message: string?];
}

可能是我想念的明显东西,但我只是不明白。

2 个答案:

答案 0 :(得分:2)

TypeScript中有an existing feature request个命名元组,但是当前不支持它们。

同时,您可以使用未命名的元组,也可以使用对象:

interface IError {
  errorOccurred: boolean;
  message?: string;
}

取决于您的用例的另一种选择可能是根据根本没有错误对象还是有errorOccurred来隐含message

答案 1 :(得分:1)

使用您的接口名称,我可以直接将属性放入其中:

interface IError {
  errorOccurred: boolean;
  message?: string;
}

并且您的对象error的类型应为IError

对于该接口的实现,您可以分别设置两个参数...