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

时间:2018-07-10 13:40:16

标签: c# typescript dictionary

我的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}
            };

5 个答案:

答案 0 :(得分:7)

您可以执行以下操作:

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

然后初始化项目:

lengthsByCountry["AD"] = 24;

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

答案 1 :(得分:3)

这只是一个javascript对象。

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

答案 2 :(得分:3)

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

例如

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

答案 3 :(得分:1)

在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 :(得分:0)

您可以借助记录

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