TypeScript:{[key:string]:any}是什么作为函数的返回类型?

时间:2020-01-26 15:28:28

标签: angular typescript

我目前正在学习TypeScript和Angular。在阅读有关自定义验证器的内容时​​,我遇到了来自https://angular.io/guide/form-validation的以下代码。

export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {
  return (control: AbstractControl): {[key: string]: any} | null => {
    const forbidden = nameRe.test(control.value);
    return forbidden ? {'forbiddenName': {value: control.value}} : null;
  };
}

我不太了解内部函数的返回类型,即{[key: string]: any}是什么意思?我了解key:string部分,即Object的键是字符串类型,但是{[key: string]: any}到底是什么意思?

2 个答案:

答案 0 :(得分:2)

这意味着该函数返回一个可以用任何字符串值索引到的对象;该属性的结果值类型为any,意味着它可以是任何东西。 (| null意味着它也可以返回null而不是返回实际对象。)

Object −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−v−−−−−−−−−−−−−−−−−−v
                                        {[key: string]: any}
Key of all properties is any string −−−−−^^^^^^^^^^^^^  ^^^−−−−− type of all
                                                                 properties is `any`

这是非常广泛的类型。

the documentation of index signatures中的更多内容。

答案 1 :(得分:-1)

它返回一个对象,例如

{
   "name": "John"
}

{
   "length": 5
}