首页 > 解决方案 > TypeScript 接口函数语法

问题描述

我想了解以下 TypeScript 函数的语法。

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

这里:AbstractControl:https ://angular.io/api/forms/AbstractControl

我的理解是:

  1. 禁止名称验证器:用户定义函数的名称。

  2. nameRe: RegExp : 函数参数 -禁止名称验证器。

  3. ValidatorFn:函数的返回类型-forbiddenNameValidator

从这里:https ://angular.io/api/forms/ValidatorFn

interface ValidatorFn
{
  (control: AbstractControl): ValidationErrors | null
}

该文档说这(control: AbstractControl): ValidationErrors | null是一个功能。

这里的哪个符号表明它是一个函数?我读过那个=>符号代表功能。

标签: typescript

解决方案


这里的哪个符号表明它是一个函数?我读过 => 符号代表函数。

有几种不同的方法可以创建函数类型。您在此处看到的只有在您定义一个接口并且想要指定该接口也是可调用的时才会出现。语法是将左侧的参数列表用括号括起来,然后是冒号,然后是右侧的返回值。

您可以在此处查看有关此特定语法的更多信息:https ://www.typescriptlang.org/docs/handbook/interfaces.html#function-types

以及这里做函数的其他方式,包括=>你熟悉的版本:https ://www.typescriptlang.org/docs/handbook/functions.html

如何control: AbstractControl在该代码的以下部分接收参数?

这些行只是创建然后返回验证器函数。尚无control对象存在。最终有人会调用这个新的验证器函数,他们有责任传入一个适当的对象。


推荐阅读