当前位置: 首页 > 知识库问答 >
问题:

类型脚本重载、可选参数和类型推断

廖弘量
2023-03-14

我目前正在研究Typescript中的重载。

假设我有一个重载的函数

function method(): void;
function method(foo: boolean, bar: boolean): void;
function method(foo?: boolean, bar?: boolean) {
    if (foo === true || foo === false) {
        const result = bar;
    }
}

要么调用函数时没有参数,要么调用函数时有两个参数(foo和bar)。根据vscode的智能感知,结果变量具有布尔|未定义的类型。

为什么即使我已经测试了foo参数,bar仍然可以未定义?如果foo存在,那么类型推断不应该预测bar也存在吗?

暂时还没有答案

 类似资料:
  • Typescript支持函数重载,这很酷,可以像这样重载一个常量函数: 但假设我想通知预期的响应类型,而不是任何。我可以通过简单地用所需类型替换来实现这一点: 如果我想更进一步,而不是说它只能返回类型的响应,我可以返回一个泛型类型: 问题是,对于< code>const,没有泛型类型< code>T。事实上没有,我需要在某处声明< code>T是一个泛型类型,但是我不知道在哪里! 我到处尝试,无法

  • 我的分类测试应用程序有一个问题,我使用了一个比较器。我收到一条信息: 线程“主”java.lang 中的异常:未解决的编译问题:无法推断排序器的类型参数 对于该代码: 分拣机类: 可比接口: id比较器类: 比较器接口: 这样用有什么错?我怎样才能做得更好?

  • 我需要 Kotlin 中的一个集合来仅包含实现给定接口的元素。 例如:包含动物集合的地图: 通过阅读文档、博客和SO问题,我编写了使用Generics in关键字的代码: 现在我想在Test类中添加一个读取“data”内容的方法,例如将其打印到控制台: 如果我这样做,我会遇到编译错误: 我的解决方案是强制我的动物进入一个ArrayList 但是我不确定这是编写这种代码的最好方式。有没有更好的方式告

  • 如果我有两个具有相同签名的方法,仅根据vararg类型变化,Java如何知道在我不使用参数或传递null时调用哪个方法? 例如,如果我有以下两种方法: 我打电话给: 输出是“字符串args”。为什么Java决定在这里调用第二个方法而不是第一个方法?我很难找到描述这一点的规范的相关部分。

  • 在以下代码中: 由于lambda不可序列化,以下代码行无法编译: 我的问题是,让lambda实现可序列化有什么语法上的好处吗,还是我必须让它成为一个非匿名类?

  • 一、泛型 Scala 支持类型参数化,使得我们能够编写泛型程序。 1.1 泛型类 Java 中使用 <> 符号来包含定义的类型参数,Scala 则使用 []。 class Pair[T, S](val first: T, val second: S) { override def toString: String = first + ":" + second } object ScalaAp