如何在打字稿中使用 C# 字典?

Posted

技术标签:

【中文标题】如何在打字稿中使用 C# 字典?【英文标题】:how to use C# dictionary in typescript? 【发布时间】:2018-12-18 09:26:09 【问题描述】:

我的 c# 中有字典对象。但我需要迁移到打字稿。我是打字稿的新手。我真的不知道,如何在打字稿中使用字典。

C#:

 LengthsByCountry = new Dictionary<string, int>
            
                "AD", 24, "AL", 28, "AT", 20, "BA", 20, 
                "BE", 16, "BG", 22, "CH", 21, "CY", 28, 
                "CZ", 24, "DE", 22, "DK", 18, "EE", 20, 
                "ES", 24, "FI", 18, "FO", 18, "FR", 27, 
                "GB", 22, "GE", 22, "GI", 23, "GL", 18, 
                "GR", 27, "HR", 21, "HU", 28, "IE", 22, 
                "IL", 23, "IS", 26, "IT", 27, "LB", 28, 
                "LI", 21, "LT", 20, "LU", 20, "LV", 21, 
                "MC", 27, "ME", 22, "MK", 19, "MT", 31, 
                "MU", 30, "NL", 18, "NO", 15, "PL", 28, 
                "PT", 25, "RO", 24, "RS", 22, "SA", 24, 
                "SE", 24, "SI", 19, "SK", 24, "SM", 27, 
                "TN", 24, "TR", 26
            ;

【问题讨论】:

不是亲自完成的,但有帮助吗? ***.com/questions/13631557/… 【参考方案1】:

您可以在记录

的帮助下创建类型
type TestType = Record<string, number>;
const stepInfo: TestType = [
 "a": 1,
 "b": 2
];

【讨论】:

【参考方案2】:

您可以使用 Map 对象。 Map 是 ES6 中引入的一种新数据结构,它允许您将键映射到值,而没有使用对象的缺点。

例如

let map = new Map();
map.set("A",1);
map.set("B",2);
map.set("C",3);

【讨论】:

【参考方案3】:

在你的 c# 端,使用return Json(data);

namespace YourNamespace.Controllers

  [Route("[controller]/[action]")]
  public class YourController : Controller
  
     private readonly IYourInterface _client;
     public YourController(IYourInterface client)
     
         this._client = client;
     
     [HttpPost]
     public async Task<JsonResult> GetYourDictionary(parms[] yourParms)
     
         //Here is your dictionary
         var data = await _client.GetYourDictionary(yourParms);
         return Json(data);
     
  

在你的 JS 端,你的结果会是这样的:


  AD:24,
  AL:28,
  ....

然后像这样使用它:Result.ADResult['AD'], 但这在大多数用法中没有意义,您将需要这个: https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Global_Objects/Object/keys

Object.keys(result).map(function(key)
    return 
    key: key,
    value: result[key]
    ;
);

Object.keys(result).forEach(....)

【讨论】:

【参考方案4】:

你可以这样做:

let lengthsByCountry:  [key: string]: number;  = ;

然后初始化项目:

lengthsByCountry["AD"] = 24;

据我所知,目前还没有内联初始化的直接映射。

【讨论】:

【参考方案5】:

它只是一个 javascript 对象。

 export interface Dto 
      lengthsByCountry:  [name: string]: string ;
    

【讨论】:

以上是关于如何在打字稿中使用 C# 字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿中声明函数类型

如何在打字稿中扩展字符串?

如何在打字稿中使用中间件键入 redux thunk

如何在打字稿中使用 singleton() 在构造函数中传递值?

如何在打字稿中正确使用 lodash-es?

如何在打字稿中键入枚举变量?