我的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}
};
答案 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.AD
或Result['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
];