请有人向我解释以下TypeScript语法:
{[s: string]: boolean}
这是Angular 2中ValidatorFn
的返回类型。特别是,数组:[s: string]
表示什么?
在编写自己的自定义ValidatorFn
函数时,布尔字段的用途是什么?以下似乎没有区别:
startsWithZero(control: FormControl): {[s: string]: boolean} {
if (control.value.indexOf('0') !== 0) {
return {'does not start with zero': true};
}
return null;
}
VS
startsWithZero(control: FormControl): {[s: string]: boolean} {
if (control.value.indexOf('0') !== 0) {
return {'does not start with zero': false};
}
return null;
}
Angular文档在这方面有点抽象,在Google上找不到多少。谢谢!
答案 0 :(得分:2)
在此示例中,类型注释{[s: string]: boolean}
表示字键,其中键为string
,值为boolean
。
此类型称为Indexable Types。这是描述字典的典型方式(a.k.a。哈希映射)。
在Angular 2中,ValidatorFn
的输入为:
export interface ValidatorFn {
(c: AbstractControl): {
[key: string]: any;
};
}
...一个采用AbstractControl
并返回字典的函数 - 该键标识验证规则,例如maxLength
,值可以是解释规则失败原因的任何内容,例如{'requiredLength': maxLength, 'actualLength': v.length}
。它不必是boolean
。
Angular 2来源的示例是here。
答案 1 :(得分:1)
我认为它评估一个字符串变量并将该变量赋值为布尔类型;比如[s:string] =" myVar"。然后它实际上说" myVar:Boolean"