是否可以在对象模式中包含不同的键?

Posted

技术标签:

【中文标题】是否可以在对象模式中包含不同的键?【英文标题】:Is it possible to contain different keys in object schema? 【发布时间】:2021-04-15 02:10:43 【问题描述】:

我有类型,例如“动物”,这个对象的键可以是任何类型,但值始终是 String 类型,例如我可以获得的一个响应:

   type Animal 
    breed: String
    eyes: String
    

其他回复:

type Animal 
something: String
somethingElse: String
someOtherField: String

是否有可能以某种方式描述这个对象?

type Animal 
  // how i can describe this object?


type General 
  name: String
  example: Animal

【问题讨论】:

这两个响应描述了两种不同的类型——它们都不能是 Animal 类型。这就是为什么您无法将它们“描述”为一组属性。 重点是“Animal”对象可以有任意键 对,我明白了,但是拥有一个具有随机键(如“wheels”、“controls”、“modelNumber”、“gearRatio”等)的 Animal“type”是没有意义的。在 Typescript 中描述了一组一致的属性,这些属性依赖于静态检查旨在采用类型“形状”的变量。如果没有你用你的想法破坏的“一致”部分,“类型检查”的整个想法就会被抛到窗外。但是,祝你好运。 【参考方案1】:

我不熟悉'graphql-js',所以不确定这是否有帮助,但可以列举一个普通的java对象如下:

var animal = 
    something: "one",
    somethingelse: "two",
    somethingother: "three"


for (var propName in animal)

    console.log(propName, animal[propName]);

输出:

"something", "one"
"somethingelse", "two"
"somethingother", "three"

【讨论】:

不幸的是这不是我的情况

以上是关于是否可以在对象模式中包含不同的键?的主要内容,如果未能解决你的问题,请参考以下文章

在星型模式表设计中包含关系有啥好处?

状态模式

设计模式策略模式

Python:将文件移动到名称中包含模式的文件夹

每天一种设计模式-- 策略模式

案例分析:设计模式与代码的结构特性