typescript强类型 - 指定对象值类型

时间:2015-08-13 09:57:05

标签: javascript types typescript

在TypeScript中,是否可以在Object中指定允许的值?例如。指定所有键都应该有数字:

{
  'id': 1,
  'attr1': 124,
  'attr2': 4356,
  ...
}

我搜索了http://www.typescriptlang.org/Handbook,发现我可以使用数组输入(键和值):

interface StringArray {
  [index: number]: string;
}

但实际上,Map(JS Object)和一个Array在概念上是不一样的(在JavaScript中,它的行为类似,但在TypeScript中,由于强类型,它应该单独处理)。

1 个答案:

答案 0 :(得分:7)

  

是否可以在Object中指定允许的值?例如。指定所有键都应该有数字

是的,这是可能的。

在JavaScript和& TypeScript(这是JS的超集)您可以通过obj.propobj['prop']访问属性,这使得下面的语法可以工作。

// This defines an interface that only allows values to be numbers
interface INumbersOnly {
  [key: string]: number;
}

// when using it, it will check that all properties are numbers
var x: INumbersOnly = {
  num: 1, // works fine
  str: 'x' // will give a type error
};

Above example in TS Playground