簡體   English   中英

如何在Typescript中修復此類型推斷

[英]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.

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