我正在尝试理解一些打字稿但主要是与Dart合作。
我看到以下示例代码与我正在做的事情相关
import {Component} from 'angular2/core';
import {Validators, MaxLengthValidator, Control, ControlGroup} from 'angular2/common';
import {isPresent} from 'angular2/src/facade/lang';
import {bootstrap} from 'angular2/platform/browser';
export class CustomValidators {
static minLengthWithDescription(minLength: number, desc: string): Function {
return (control: modelModule.Control): {[key: string]: any} => {
if (isPresent(Validators.required(control))) return null;
var v: string = control.value;
return v.length < minLength ?
{"minlength": {"requiredLength": minLength, "actualLength": v.length, "desc": desc}} :
null;
};
}
}
我可以按照大部分代码进行操作,但以下内容实际上是做什么的
return (control: modelModule.Control): {[key: string]: any} =>
能理解这两种语言的人能将这个小班改为Dart吗?
由于
答案 0 :(得分:1)
主要是关于从右到左移动类型
我猜这个令人困惑的部分是{[key: string]: any}
,我认为它也只是返回函数的返回类型。我想它转换为Map<String,dynamic>
,但目前无法为Dart中的闭包添加返回类型注释。解决方法是创建typedef
typedef Map<String,dynamic> SomeFunc(modelModule.Control control);
class CustomValidators {
static SomeFunc minLengthWithDescription(int minLength, String desc) {
return (modelModule.Control control) {
if (isPresent(Validators.required(control))) return null;
String v = control.value;
return v.length < minLength ?
{"minlength": {"requiredLength": minLength, "actualLength": v.length, "desc": desc}} :
null;
};
}
}
我无法从您提供的代码中获取modelModule.
的内容,但我想这是引用类Control
的某个命名空间或嵌套范围。