簡體   English   中英

TypeScript for循環中的類型聲明

[英]Type declaration in TypeScript for loop

有沒有一種更整潔/更優雅的方法來將day為適當的類型,而不是(<{P: string}>day).P而在這種情況下,我不通過any類型從我通過underscore.js接收day對象findWhere命令?

如果我只寫let period of day.P則會導致此錯誤:
TS2339:Property 'P' does not exist on type '{}'.

let day = _.findWhere(this.availabilityDays, {D: moment($scope.model.BookDate).format('YYYY-MM-DD')});
this.$scope.BookingPeriods.splice(0);
for (let period of (<{P: string}>day).P) {
    this.$scope.BookingPeriods.push(period);
}

使用界面

interface Day {
  P: string;
}

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

如果問題出在_.findWhere ,它可能_.findWhere返回的結果聲明為一個對象(我沒有檢查過),則可以使用as語法_.findWhere結果

let day: Day = _.findWhere(this.availabilityDays, condition) as Day;

由於似乎您僅對此任務的“ P”成員感興趣。 我個人建議在開始for循環之前為整個可讀性以及關注點分離(在Moment實體和工作數據之間有明顯區別)開始之前,映射整個Day數組並進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM