将TypeScript转换为Dart

时间:2016-02-02 05:33:34

标签: dart angular

我正在尝试理解一些打字稿但主要是与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吗?

由于

1 个答案:

答案 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的某个命名空间或嵌套范围。