如何为具有已知和未知属性名称的对象定义接口

时间:2017-10-04 07:29:37

标签: typescript

这是一个我希望为其定义界面的对象,

{
  date: '2000-10-01',
  foo: 10,
  bar: 11,
  baz: 12
}

我唯一知道的是date属性总是存在,但我不知道其他属性是什么?

interface IProperty {
  date: string
  [option: string]: number
}

在这种情况下似乎不起作用,TS抱怨

  

字符串不能分配给字符串索引类型编号。

1 个答案:

答案 0 :(得分:2)

在原始界面中,您声明该接口将包含字符串索引,并返回一个数字 - 但您的date属性不符合此属性,这意味着您的界面与自身相矛盾。

你需要说实话,你可以得到一个数字或一个字符串(在一个特定情况下)......

interface IProperty {
  date: string
  [option: string]: string | number;
}