【问题标题】:C# Dictionary in TypeScript?TypeScript 中的 C# 字典?
【发布时间】:2016-12-14 10:58:56
【问题描述】:

我应该如何实现 TypeScript 接口来定义这个 C# 模型:

public class PageModel
{
    public long Id { get; set; }
    public string Name { get; set; }
    public IDictionary<string, FieldModel> Fields { get; set; }
}

public class FieldModel
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
    public string DataType { get; set; }
    public string DefaultValue { get; set; }
}

【问题讨论】:

  • 不是重复的,这个问题是在问一些不同的、更具体的问题:«为什么初始化没有被拒绝?毕竟,第二个对象没有“lastName”属性。»

标签: dictionary typescript


【解决方案1】:

如果您只是在寻找接口:

interface PageModel {
    Id: number;
    Name: string;
    Fields: { [key: string]: FieldModel };
}

interface FieldModel {
    Id: number;
    Name: string;
    Type: string;
    DataType: string;
    DefaultValue: string;
}

一些区别:

  1. Javascript 没有 long/integer/double 的概念,它们都是数字
  2. 在基于 js 对象表示法的简单地图实现中,键只是字符串。在打字稿中,这些被称为Indexable Types
  3. 虽然您可以在类中使用 get/set,但接口没有此功能,您只能定义属性。

【讨论】:

  • 为什么使用interface 而不是class?
  • @fuzz 如果您只是在寻找包含数据的对象(没有方法),那么 javascript 对象是比类更好的选择。您正在使用一个接口来描述这个 js 对象的外观。
猜你喜欢
  • 2012-11-17
  • 2019-10-14
  • 2014-08-15
  • 2013-04-16
  • 2021-08-21
  • 1970-01-01
  • 2023-02-02
  • 2017-07-01
  • 2019-01-13
相关资源
最近更新 更多