【问题标题】:Can Typescript have a case insensitive property match with Json?Typescript 可以与 Json 匹配不区分大小写的属性吗?
【发布时间】:2017-04-20 12:05:02
【问题描述】:

假设我在 Typescript 中有这个定义的类:

class Data{
   Dimension1: string;
   Dimension2: string;
   Metrics: Array<string>;
}

有没有办法我可以用下面的 json 数据声明一个 Data 实例(小写的属性)?

let json: Data = {
   "dimension1": "some dim",
   "dimension2": "some other dimes",
   "metrics": ["metric1", "metric2"]
}

目前,编译器会抱怨 Type 的属性不兼容。

【问题讨论】:

  • 没有。这有什么用? JS 键名区分大小写。

标签: json typescript


【解决方案1】:

有没有办法做到这一点。如果你不这样做。

如果你想知道

let json: Data = <Data> {
   "dimension1": "some dim",
   "dimension2": "some other dimes",
   "metrics": ["metric1", "metric2"]
}

这将允许你做你想做的事。我又不会这样做。 如果您想要更多选择,如更好的选择,您可以告诉我。 如果有用,请勾选此答案。

【讨论】:

  • 但是在这种情况下,当 OP 尝试访问 json 上的任何大写属性时,它只会导致 undefined。这有什么用?他还不如投一个空对象到Data
  • 你读过我的第一行吗?有没有办法做到这一点。如果你不这样做。这是不这样做的明显原因。我什至留下了一个评论说如果你想要更多的选择更好的选择让我知道。有没有更多你希望我做得更好的事情。这是否不能回答他的问题,告诉他这是错误的方向,并在他遇到其他问题时提供进一步的帮助。我究竟应该怎么做?
  • 是的,你是对的。 Typescript 鼓励采用驼峰式命名约定。
  • 我回答了这个人的问题,建议他不要这样做,并说如果他需要更多帮助,请告诉我,我仍然拒绝投票吗?这是你不能取悦所有人的教科书案例...... :'(
  • 我没有投票,但你没有解释为什么不这样做或它的任何缺点(甚至它可能实际上不会按预期工作的事实),所以这可能是投反对票的原因。
猜你喜欢
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2013-10-19
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
相关资源
最近更新 更多