8

当我在 angular2-meteor 项目中使用Collection2时,这些来自演示的代码总是在终端中给我警告:

返回表达式中不存在最佳通用类型。

如何改进代码?谢谢

{
  createdAt: {
    type: Date,
    autoValue: function() {
      if (this.isInsert) {
        return new Date();
      } else if (this.isUpsert) {
        return {$setOnInsert: new Date()};
      } else {
        this.unset();
      }
    }
  }
}
4

1 回答 1

9

由于每个返回分支都需要一个 Date 类型,因此您必须为每个 if/else 分支返回一个 Date 类型,或者您可以创建一个返回两种不同类型的联合。

在任何一种情况下,如果类型是 Date,则可以为第三个条件返回 null。这在打字稿中是有效的。

autoValue: function() : Date|Object  {
    if (this.isInsert) {
        return new Date();
    } else if (this.isUpsert) {
        return {$setOnInsert: new Date()};
    } else {
        this.unset();
        return null;
    }
}
于 2016-03-26T03:46:46.643 回答