问题标签 [type-assertion]

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 投票
2 回答
18242 浏览

interface - 我可以键入断言一部分接口值吗?

我正在尝试从 a 键入 assert[]Node[]Symbol. 在我的代码中,Symbol实现了Node接口。

这是一些周围的代码:

这是我得到的错误:

我确信这是有充分理由的。最好的方法是什么?

0 投票
14 回答
226395 浏览

typescript - 如何在 TypeScript 中断言 HTMLElement 的类型?

我正在尝试这样做:

但它给了我一个错误:

除非我将其转换为正确的类型,否则我无法访问脚本元素的“类型”成员,但我不知道该怎么做。我搜索了文档和示例,但找不到任何东西。

0 投票
2 回答
2020 浏览

go - 类型断言嵌套接口

json.Unmarshal 将 JSON 转换为interface{}. 我无法键入断言它。http://play.golang.org/p/NAe8voYnb8

有谁知道怎么回事?

0 投票
4 回答
2185 浏览

java - 在Java中将父类分配给子类变量

我有一个父类和一些子类(我们称它们为parentand child1, child2,child3等)。

我有一个函数,它采用二维数组parents并将其展平为一维数组,如下所示:

在调用上下文中,我知道当我传递一个数组时,所有元素都具有相同的类型,并且该类型是子类型之一(特别是,我知道它是哪个子类型)。我希望能够获取数组的特定元素,并将其分配给正确子类型的变量,如下所示:

我知道类型断言(相关的 SO 帖子:Assert an object is a specific type),但如果断言成功,我似乎无法找到一种方法来实际分配给正确类型的变量。在Java中甚至可能发生这样的事情吗?我知道这在其他语言中是可能的,例如在 Go 中。

0 投票
1 回答
67 浏览

unit-testing - 单元测试失败,消息矛盾

我有一个名为的对象Content,它继承自ContentBase.

ContentBase是一个具有很少属性的基本类。 Content完全是空的。它只是从ContentBase.

使用 Moq 我有这个测试:

失败并显示此消息:

当 Content 没有从 ContentBase 继承时,这不会发生,但我仍然觉得错误消息很荒谬。

Content 类包含这个 Equals:

失败的 Assert 不会触发 Equals 方法

但是下面的 Assert 确实触发了 Equals 并且测试通过了:

有没有人见过这个?

0 投票
1 回答
14456 浏览

go - “点括号”语法的含义是什么?

我正在研究一个将数据存储在 mongodb 中的示例 Go 应用程序。这一行的代码(https://github.com/zeebo/gostbook/blob/master/context.go#L36)似乎访问了存储在大猩猩会话中的用户ID:

有人可以向我解释一下这里的语法吗?我知道这sess.Values["user"]会从会话中获得价值,但接下来的部分是什么?为什么括号中的点后面的表达式?这是函数调用吗?

0 投票
1 回答
460 浏览

linux - syscall.Sockaddr 类型断言

我正在打开一个 Linux 数据包套接字并尝试将接收到的数据包读入一个结构:

根据文档(http://golang.org/pkg/syscall/#RecvmsgRecvmsg()返回 msghdr 作为 asyscall.Sockaddr并且我在上面概述的代码片段有效。

打印出pkt.fromstruct成员,可以看到Sockaddr界面中的值:

但是,如果我尝试访问它们,则会收到错误消息:

通过reflect.TypeOf(pkt.from)我发现它是 type *syscall.SockaddrLinklayer。尝试进行分配时,尝试将我的msgstruct 成员更改为该类型失败,Recvmsg因为它不是 type syscall.Sockaddr

我能够使用类型断言:

我对 Go 很陌生;这是我的第一个静态类型语言,所以我不明白Recvmsgfunc如何需要asyscall.Sockaddr 返回 a *syscall.SockaddrLinklayer?我显然错过了一些非常基本的东西。另外,使用类型断言是正确的方法吗?感觉不太对劲……但我真的没有资格做出这样的判断!

0 投票
1 回答
2038 浏览

callback - 如何对 interface{} 变量进行类型断言以测试它是否是函数?

我正在尝试编写一个函数,该函数既可以接受某种类型的任意类型的内容,也可以接受可以生成和返回任意类型的函数。为此,我必须能够通常测试参数是否是函数,而无需测试它是否是返回类型 X 的函数。我该怎么做?可能如下所示:

这失败了。也许类型断言不是在这里使用的东西。或者也许我只是不知道语法。将不胜感激任何建议。我目前唯一知道要做的就是把它分成两个函数,一个接受要按原样存储的数据,另一个期望得到一个函数,但这似乎有点过头了,因为在这两种情况下,目标只是得到一个值并将其传递给函数的其余部分。

对此有什么想法吗?

0 投票
1 回答
97 浏览

json - 可以使用恐慌/恢复作为测试成功类型断言的方法吗?

我一直在研究一种尝试解析嵌套 JSON 响应而不将信息映射到预定义结构的方法。

使用空白界面,它返回为:

因此,我使用以下内容来导航此信息:

这是从 JSON 字符串解析信息的可接受方式,还是有更可取的方法?

以下是使用上述内容解析出我当前正在使用的正确信息的示例:

任何见解将不胜感激!谢谢!

0 投票
6 回答
25483 浏览

casting - 类型断言/类型切换是否性能不佳/在 Go 中运行缓慢?

在 Go 中使用类型断言/类型切换作为运行时类型发现的方法有多慢?

例如,我听说在 C/C++ 中,在运行时发现类型的性能很差。为了绕过它,您通常将类型成员添加到类中,因此您可以与这些成员进行比较而不是强制转换。

我在整个 www 中都没有找到明确的答案。

这是我要问的一个示例 -与其他类型检查方法(如上面提到的或我不知道的其他方法)相比,这是否被认为快?