问题标签 [structural-typing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
363 浏览

scala - 在 Scala 中使用 Shapeless 从案例类创建“丰富”类型

我有这个示例代码:

这很好,因为我不必编写从IncomingThingto复制所有字段的样板DatabaseIncomingThing。但是,我希望不必同时维护这两种类型,因为两者之间有非常明确的关系(一个有id,另一个没有)。

有没有办法通过添加或删除一个字段来从给定的案例类创建类型?我想像

type IncomingThing = withoutField[DatabaseIncomingThing]('id)

或者类似的东西。

0 投票
0 回答
788 浏览

scala - 结构细化中的结果类型可能不引用用户定义的值类

当我将 Wrapper 定义为值类(扩展 AnyVal)时:

我对 wrapperHolder 有以下编译错误:

  • 为什么它不适用于价值类?
0 投票
1 回答
1976 浏览

python - 具有自我类型的通用协议中的类方法,mypy 类型检查失败

一点背景知识,我基本上需要定义一个int包装器类型,比如说MyInt(在其他一些类中),以及另一个Interval可以接受MyInt对象以及其他类型对象的泛型类型。由于 可接受的类型Interval不属于整洁的层次结构,我认为这将是实验的完美用例Protocol,在我的情况下需要几个方法和几个@classmethods。所有方法都返回一个“自我类型”,即MyInt.my_method返回一个MyInt. 这是一个MCVE:

然而,mypy 抱怨:

这对我来说很难理解。为什么返回类型期望<nothing>?我试着简单地不在协议中注释cls

但是,mypy 抱怨类似的错误消息:

对我来说,这更没有意义。请注意,如果我创建这些实例方法:

然后,mypy根本不抱怨:

我已经阅读了PEP 544 中协议中的自我类型,其中给出了以下示例:

此外,在 PEP484 中,关于输入 classmethods,我们看到了这个例子:

我的Protocol/ 类定义有什么问题?我错过了一些明显的东西吗?我将不胜感激有关为什么失败或任何解决方法的任何具体答案。但请注意,我需要在类上访问这些属性。

请注意,我尝试过使用 a ClassVar,但这引入了其他问题......即,据我所知ClassVar,不接受类型变量's cannot be generic。理想情况下,这将是因为我可能不得不依赖其他我想在课堂上推送的元数据。ClassVar@classmethod

0 投票
2 回答
228 浏览

java - Java中的结构类型 - 坚持接口而不需要导入它

假设我有一个简单的界面:

假设我有一个清单:

但这意味着列表必须按名称实现该接口。但是,如果我愿意接受任何具有返回具有该名称的字符串的方法的对象怎么办?

有没有办法以某种方式使用泛型在 Java 中获得结构类型?

然后告诉 Java 编译器关于 T? 就像是:

我想一种方法可以使用这样的泛型:

剩下的部分是方法名。但这仍然意味着您必须按名称/包引用相同的确切接口。

0 投票
1 回答
1223 浏览

typescript - 为什么 Typescript 允许子类型化?

根据文档,“TypeScript 中的类型兼容性基于结构子类型”。所以这是可能的:

这有很多后果,其中之一是在使用 Object.keys 时会丢失类型信息:

因此,我试图按照他们的承诺在 TS 文档中找到这种子类型的原因,但我找不到

仔细考虑了 TypeScript 允许不合理行为的地方,在整个文档中,我们将解释这些情况发生的地方以及它们背后的激励场景。

这可能对我有帮助的唯一地方是一个需要更窄类型对象的函数,例如:

如果您在这种情况下必须使用强制转换,我个人认为这不是什么大问题:

还有其他我可能遗漏的例子吗?

0 投票
1 回答
69 浏览

json - 自动推导结构类型的编解码器

给定以下 JSON 结构

和对应的型号

circe 能够自动反序列化

当模型通过结构类型定义时是否可以自动反序列化

0 投票
0 回答
87 浏览

go - 使用嵌入类型的结构类型 - GO

在下面的代码中:


Person结构类型People,因为它实现了 的行为People

对于以下代码:

为什么obj1.getDetails()会得到解决?是因为,Speaker类型有嵌入Person类型,而Person类型是结构类型的People接口类型吗?

0 投票
2 回答
145 浏览

scala - 如何在 Scala 中实例化结构类型?

我正在尝试在 Scala 中创建结构类型以避免定义中间类。本质上,我只想定义一个结构,它将被编组/解组到/从 JSON 字符串。

例如,描述如下 JSON

我有一个相应的结构类型:

创建实例的正确方法是NumberRangeQuery什么?

0 投票
1 回答
222 浏览

python - Callable什么时候缺少__module__?

我正在为python中的函数制作一个日志装饰器:

PyCharm 的静态分析告诉我,我不能期望 aCallable具有属性__module__。到目前为止,我还没有遇到过失败的情况。有谁知道在什么情况下可能会遇到Callable没有该__module__属性的 a ?

0 投票
1 回答
164 浏览

flowtype - 流:形状类型和其他可选字段

我经常发现自己需要做以下事情,而 Flow 让它变得非常困难:

有什么好的方法可以做到这一点吗?我收到以下错误: