问题标签 [type-variables]

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 回答
739 浏览

python - 字典类型不适用于使用 mypy 的 TypeVar?

我正在尝试创建一个小服务定位器。所有服务都是 BaseService 类的子类。我使用 registerService 方法向其实例注册服务类类型,并将其存储在 _services 字典中。然后,您可以使用所需的类类型获取调用 getService 的服务实例。例子:

这是显示错误的代码:

我收到错误:在添加 Dict 注释的行中输入无效类型“servicelocator.E”,正如我在代码中显示的那样。

我正在使用 Python 3.6.4 和 MyPy 0.590。Mypy 标志是:

这不应该正确吗?

0 投票
1 回答
21 浏览

generics - 在泛型类中使用类型变量作为返回类型

上面的代码导致编译器错误,我不明白为什么。doStuff() 方法返回 'E type' ,因为 E 扩展了 C,任何期望 C 的方法都可以接受 'E',反之亦然为什么我会收到错误消息?我在 OCPJP 的模拟测试中看到了这个问题。提前感谢您的帮助

0 投票
1 回答
114 浏览

typescript - 限制方法中的接口类型参数

我试图传达一个方法只有在其接口的类型参数符合某个约束时才有意义。这是一个(非编译)示例:

在这里,我试图传达sum只有在T extends number.

0 投票
1 回答
21 浏览

java - 泛型类创建

任何人都可以给我解释以下内容..

这里的“第 1 行”将无法编译,因为 typeList 被定义为采用一些扩展 Shape 的类。但是编译器不知道哪个类。因此编译失败。

相同的逻辑适用于“第 2 行”。shapeList如何分配给typeList?为什么这一行没有给出编译错误?

0 投票
2 回答
89 浏览

scala - 在类型和值之间建立联系

我有能够进行一些编译时算术验证的类型级算术实现,即<,>,=通过两种方式:

有了这些,我可以有一个getFoo可以这样调用的函数:

和是整数值 2_2_33 的类型级等价物。现在理想情况下,我希望我的getFoo函数将整数值作为参数并尝试_2从 value推断2

Nat我的计划是在基类中添加以下 associatedInt 信息:

这样后续的类型将被定义为:

然后更改 getFoo 的签名,使其采用整数:

基于此,我们将使用与类型关联的AssociatedInt类型进行类型级别的算术断言。即,类似:

这是行不通的。IE:

回想起来,我不应该期望它。因为如果我们有:

即具有相同值的不同“对象”的单例类型是不同的。(我猜原因是目前在 Scala 中,单例类型用于对象并且与文字类型不同)

因此,有了这些背景信息,我想知道是否有任何方法可以实现我想要做的事情,即通过其他方法从关联值推断 a 类型。

0 投票
1 回答
1118 浏览

python-3.x - 在泛型类内的泛型方法上绑定 TypeVar

出于某种原因,此代码会出现问题:

Mypy linter 将我发送到def func线路,说Unsupported type Type["T"]. 如果Foo未定义为泛型类,则不会发生这种情况。

这是一个错误吗?我究竟做错了什么?

我正在使用不同的S方法,我希望在.TType[T]Foo

0 投票
2 回答
756 浏览

scala - 如何知道 Scala 中 Map 值 Map("key->"value") 的类型?

我对 Map("id") 的值有疑问,它可能有两种类型:String 或 Map[String,String]。

我想对这样的 Match 案例进行检查:

有谁知道我应该如何处理这种情况?

0 投票
2 回答
308 浏览

types - 函数参数中的 Julia 类型参数嵌套/范围

我之前发布的一个问题之后,我试图了解函数方法中类型参数范围的细节。
例如:

约束仅涵盖的<:Number参数列表f

但似乎g是由它参数化的:

除了样式和限制范围之外, “[您]通常希望T尽可能少地覆盖签名”是否有原因? 在性能、调度或代码生成方面是否有任何影响?T

0 投票
0 回答
61 浏览

java - 找出泛型父类的类型变量的实际值

我想知道是否有人可以指出一个可以为我解决这个问题的图书馆......

给定一个类的类型声明,A我想确定分配给扩展或实现的类或接口B的类型变量的实际类型。A

例如 ...

这可能是最简单的情况......如果ArrayList类型变量是通配符,我会对最严格的上限感兴趣......如果它是 Blah 的类型变量(因此Blah<T>ArrayList<T>),那么它将是上限界的T等等。

我已经开始研究使用 java.lang.reflect.Type 层次结构,但它似乎需要做很多工作,也许解决方案已经出来了。

0 投票
1 回答
54 浏览

haskell - 似乎不能在实例声明中使用带有类型变量的类型表达式和需要显式类型的函数

我无论如何都无法在 Haskell 中找到指定调用“ neg ”的类型:

(V3 e)e都是Arith的实例。在这里,我想调用已经为类型'e'定义的 ' neg ' 。但这需要“ neg ”调用上的显式类型,并且没有表达式可以解析该类型?如果使用'e'的特定实例,那很好。

vfmap (neg :: Dist->Dist ) x -- 这行得通(但不够通用) vfmap (neg :: e->e) x-- 没有使用 'neg' 产生 ( Arith e1 ) 的实例 -- 使用'neg ' vfmap neg e产生的不明确类型变量 'e0' 阻止了约束 '(Arith e0)' 从被解决。 vfmap (neg :: Arith e => e->e) x——同上

vfmap可以应用于 ( V2 e ) 或 ( V3 e ),这两种向量类型都适用于任何Arith元素类型的向量。

当元素类型是类型变量时,这似乎不会编译,例如

• 由表达式类型签名引起的不明确类型变量“<strong>e0”会阻止解决约束“<strong>(Arith e0)”。可能的修复:使用类型注释来指定 '<strong>e0' 应该是什么。