[英]How do I fix this type inference in Typescript
我有一個打字稿錯誤需要修復。 這是在前面的腳本中聲明的:
protected suggestedServicesDict: { [id: number]: { [id: number]: { weight: number } } } = {}
然后使用for循環嘗試遍歷集合
for (var categoryId in this.suggestedServicesDict) {
這導致categoryId被推斷為字符串而不是數字。 稍后會導致驗證錯誤,因為另一個函數需要一個數字。 稍后,它在uggestedCategory中使用:
var suggestedCategory = { CategoryId: categoryId, Name: category.Name, AverageWeight: 0, Services: [] };
在這里,它導致建議的CategoryTypeId為字符串。
我似乎無法成功地將其聲明為數字,而不是允許對其進行推斷,但我嘗試了許多沒有用的方法。
誰能告訴我如何確保categoryId是數字
雖然可索引類型支持數字作為鍵,但這僅適用於為鍵添加/設置值:
let a = 3;
let o = {} as { [num: number]: string };
o[a] = "three";
但是在javascript中,鍵始終是字符串,因此上述代碼實際上將創建以下對象:
{
"3": "three"
}
如果您知道鍵是數字的字符串表示形式,則可以使用Number
來獲取數字值:
for (let categoryId in this.suggestedServicesDict) {
let idNumber = Number(categoryId);
let value = this.suggestedServicesDict[idNumber]; // or [categoryId]
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.