在TypeScript中为循环键入声明

时间:2018-02-27 04:50:21

标签: typescript

是否有更简洁/更优雅的方式将day作为适当的类型,而不是(<{P: string}>day).P而不是在我收到{{1}的情况下诉诸any类型来自underscore.js的对象通过findWhere命令?

如果我只是写day,则会导致此错误:
let period of day.P

TS2339:Property 'P' does not exist on type '{}'.

2 个答案:

答案 0 :(得分:2)

使用界面

interface Day {
  P: string;
}

// in the class
public availabilityDays: Day[];

如果问题在_.findWhere中,可能会将返回的结果声明为对象(我没有检查过),那么您可以使用as语法

来转换结果
let day: Day = _.findWhere(this.availabilityDays, condition) as Day;

答案 1 :(得分:0)

因为看起来你唯一对这个任务的“P”成员感兴趣。我个人会建议在day数组上进行映射并在开始for循环之前进行转换以获得可读性以及关注点的分离(明确区分你的Moment实体和工作数据)。