在TypeScript中,是否可以在Object中指定允许的值?例如。指定所有键都应该有数字:
{
'id': 1,
'attr1': 124,
'attr2': 4356,
...
}
我搜索了http://www.typescriptlang.org/Handbook,发现我可以使用数组输入(键和值):
interface StringArray {
[index: number]: string;
}
但实际上,Map(JS Object)和一个Array在概念上是不一样的(在JavaScript中,它的行为类似,但在TypeScript中,由于强类型,它应该单独处理)。
答案 0 :(得分:7)
是否可以在Object中指定允许的值?例如。指定所有键都应该有数字
是的,这是可能的。
在JavaScript和& TypeScript(这是JS的超集)您可以通过obj.prop
或obj['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
};