type-inference相关内容
我正在尝试创建一个函数,该函数可以安全地查找深度嵌套对象(在本例中为 theme)中的属性.我应该提到我不想静态定义它的类型,因为它们旨在成为频繁更改的主题,因此使用 typeof 此函数接受对象本身和 3 个键,但问题是 — 我无法正确推断所有这些键的类型. const theme = {按钮:{边距:{sm:“sm"}},形式:{填充:{lg:“lg"}}}类型主题 = 类型主题输入
..
我创建了一个名为 maptree 的函数.下面是我的代码: datatype 'a tree = 'a 的 LEAF |'一棵树*'一棵树的节点;有趣的映射树(f,节点(X,Y))=节点(映射树(f,X),映射树(f,Y))|maptree(f, LEAF(X)) = LEAF(f X); 我希望 maptree 有类型 ('a -> 'a) ->'一棵树 ->'一颗树 但是编译器推断的
..
我是 TypeScript 的新手,具有很强的 C# 背景. 我想知道类型推断在 TypeScript 中的以下情况下似乎不起作用但在 C# 中起作用的确切原因是什么: 打字稿: interface IResult { }interface IRequest{ }接口 ISomeResult 扩展 IResult {道具:字符串;}接口 ISomeRequest 扩展了 IReque
..
我希望 arg 参数从父类推断类型 导出抽象类 IEngineClas {抽象查看器(参数:字符串):布尔值}导出类 MyClass 扩展了 IEngineClas {观众(参数){返回真}} 然而在实践中,编译器抱怨 arg 的隐式类型为 any. 我也尝试过使用界面的方法 导出接口 IEngine {查看器?:(参数:字符串)=>布尔值}导出类 MyClass 实现 IEngine
..
下面是代码(游乐场链接): interface XY {x: number, y: number}function mcve(current: XY | undefined, pointers: Record): void {if(!current) { throw new Error();}而(真){让键 = current.x + ',' + current.y;当前 = 指针 [键];}}
..
我编写了一个更新函数,它接受一个对象 T 和一个“updater"对象,它采用与 T 相同的键(或子集)并提供了更新原始对象对应值的函数. type UpdaterObj= {[部分T的密钥中的K]:(t:T[K])=>T[K]};声明函数更新(obj: T, updaterObj: UpdaterObj): T 示例用法如下: const foo = {x: 1,y:“1"};更新(富,{
..
我将 TypeScript 与 MongoDB node.js 驱动程序一起使用.请注意,这不是 Mongo 问题,它只是我遇到的这个问题的特定用例. 几乎每个 Mongo 调用都使用 (arg1, arg2, ..., argn, callback) 的模式,其中 callback 是一个接受 (错误,资源).但是,我想使用承诺.我试图通过编写一个辅助包装函数来简化我的用法,如下所示:
..
我想知道以下问题是否有解决方案:我有两个接受不同输入参数的函数,我有一个对象将每个函数映射到一个字符串. 我定义了一个类型,它是一个联合类型的对象,包含映射中一个函数的键和一个与函数参数类型匹配的值.给定一个具有该类型的对象,我想从地图对象中检索相应的函数并使用该值调用它,但 typescript 不进行类型推断. const f1 = (value: number) =>价值;const
..
Function.identity() 返回一个函数,Function 总是返回其输入参数(即身份函数). 但是作为一个静态方法,当它甚至不接受任何输入时,它如何知道返回哪个具体参数来代替类型参数T? 我的思维过程说明: Map idToPerson = people.collect( Collectors.toMap( (person -> person.getID() , Fun
..
所以我正在编写代码来区分我的应用程序的多个版本: static var jsonURLNL = {如果 ProcessInfo.processInfo.environment["CONSUMER"] != nil {返回 URL(字符串:“consumerURL")!}返回网址(字符串:“专业网址")!}() 但是我得到了一个编译器错误: 无法推断复杂的闭包返回类型;添加显式类型以消除歧
..
谁能解释一下为什么给出以下代码: 让 f = () =>{throw new Error("不应该到这里");}让 g = 函数(){throw new Error("不应该到这里");}函数 h() {throw new Error("不应该到这里");} 推断出以下类型: f 是 () =>从不 g 是 () =>从不 h 是 () =>无效 我希望 h 的类型是 () =
..
我正在尝试定义帮助器类型来确定嵌套对象值的类型,同时还考虑任何可选的父键,例如在这样的(或更深的)结构中: type Foo = { a: { b?: number;} };type Foo2 = { a?: { b: number } }; 就我而言,Foo 和 Foo2 中 b 的类型应该被推断为 number |未定义.在 Foo2 中, b 本身不是可选的,但是因为 a 是,对于我的查
..
给定 Haskell 函数: head .过滤器 现在的问题是如何手动“手动"查找类型.如果我让 Haskell 告诉我我得到的类型: head .过滤器 fst :: [(Bool, b)] ->(布尔,b) 但我想仅使用定义如下的所用函数的签名来了解这是如何工作的: head :: [a] ->一种(.) :: (b -> c) ->(a -> b) ->->C过滤器 :: (a -
..
我有一个由 AnyObject 组成的数组.我想迭代它,并找到所有是数组实例的元素. 如何在 Swift 中检查对象是否属于给定类型? 解决方案 如果要检查特定类型,可以执行以下操作: if let stringArray = obj as?[细绳] {//obj 是一个字符串数组.用 stringArray 做点什么}别的 {//obj 不是字符串数组} 您可以使用“作为!"如
..
scala>A级[T]定义类 A标度>类 B[T](a: A[T])定义的 B 类标度>val b = new B(new A[Int])b: B[Int] = B@1ff8982d 太好了!我可以从 A 的实例创建 B 的实例.除了一个例外.对于 A[Nothing] 的实例,类型推断失败. scala>val b = new B(new A[Nothing]):9: 错误
..
我正在使用 scala-2.8.1 和 scalaz-5.0.谁能解释一下为什么 PartialApply1Of2 可以在一种情况下被推断出来,而在另一种情况下不能? scala>1.成功[字符串] "呸".fail[Int]res1: scalaz.Validation[String,(Int, Int)] = Failure(Bah) 即使(之前已经问过!)方法 在 MA 上,它
..
进一步我的另一个问题关于reduceLeft,reduceLeft在Seq上的签名是 def reduceLeft [B >: A] (f: (B, A) ⇒ B): B 我们可以用诸如 之类的表达式来调用它 List(1,2,3,4) reduceLeft (_ + _) 在这个例子中 A 是 Int,所以 reduceLeft 需要一个 Function2[B >: Int, I
..
我想了解类型检查/算法的工作原理.这很复杂,而且有很多情况.是否有任何好的教程/文档(我知道语言规范,但 IMO,太难阅读了). 我只想了解 Scala 的类型推断是如何在幕后工作的细节. 解决方案 其实并不复杂.可以在 Odersky/Spoon/Venners 的书“Scala 编程"(第 1 版;在第二版中我认为是第 16.10 节)的第 16.9 节中找到非常简洁的描述:
..
我很困惑为什么 Scala 会抱怨这段代码.我有两个相互依赖的类.当我尝试在没有类型声明的情况下创建 A 的新实例时,代码将无法编译. class A( b:B ) {}B类(a:A){}val y = new A ( new B( y ) );//给出递归值 y 需要类型val z:A = new A ( new B( y ) );//好的 当我声明为new A时,为什么编译器不知道y的类
..
为什么类型推断器会放弃这个: def test(a: Seq[Int], b: Seq[Int]) = (a, b).zipped.map((_ + _)/2)//没有 像这样: :35: 错误:缺少扩展函数的参数类型((x$1, x$2) => x$1.$plus(x$2))def test(a: Seq[Int], b: Seq[Int]) = (a, b).zipped.map((_
..