【问题标题】:TypeScript: What does {[key: string]: any} means as return type of a function?TypeScript:{[key: string]: any} 作为函数的返回类型是什么意思?
【发布时间】:2020-05-12 03:49:48
【问题描述】:

我目前正在学习 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 部分,即对象的键是字符串类型,但{[key: string]: any} 到底是什么意思?

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

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

    对象 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−v−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− −−−v {[键:字符串]:任何} 所有属性的键是任何字符串 −−−−−^^^^^^^^^^^^^ ^^^−−−−− 类型的所有 属性是`任何`

    这是一种非常宽泛的类型。

    the documentation of index signatures 中的更多信息。

    【讨论】:

    • 从您链接的文档中,我认为正确的术语是“索引签名”,而不是“索引类型”。有关更多信息,请参阅此部分:typescriptlang.org/docs/handbook/…
    【解决方案2】:

    它返回一个对象,比如

    {
       "name": "John"
    }
    

    {
       "length": 5
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2018-07-10
      相关资源
      最近更新 更多