“((control:AbstractControl):{[key:string]:any} | null =>”做什么?

时间:2018-09-07 03:45:09

标签: angular typescript

我是TypeScript和Angular的新手,但是我在C#中有很好的背景。

我正在阅读此article,特别是“自定义验证器”和此代码段

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;
  };
}

这行代码做什么/意味着什么?这是TypeScript定义委托的方式吗?

(control: AbstractControl): {[key: string]: any} | null => {

1 个答案:

答案 0 :(得分:4)

这是arrow function。要了解它,您可以阅读为

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

也就是说,该函数返回类型{[key: string]: any}(具有声明为变量key的键的对象,并且值类型可以是任意)或null;而该函数需要角度类型为AbstractControl的输入值。

在TypeScript中,冒号通常以两种方式使用:

  1. 在对象中,例如{ key: value }
  2. 定义值的类型,在这种情况下可能是您的问题。

希望这会有所帮助。欢迎来到Angular和TypeScript的世界!