当函数test返回一个类型为any的值时,为什么在使用tsc并打开--noImplicitAny的情况下,以下代码在编译期间没有引发任何错误?

我不认为在这种情况下,编译器能够推断函数返回值的类型,因为依赖于If Else,返回类型是不同的.

function test(str: string)
{
    if(str === "b")
    {
        return "abcd";
    }
    else
    {
        return 5;
    }
}


console.log(typeof(test("b"));
console.log(typeof(test("c"));

推荐答案

没有隐式any,函数签名可以推断为:

function test(str: string): "abcd" | 5

Playground

Typescript相关问答推荐

ReturnType此索引方法与点表示法之间的差异

更新:Typescript实用程序函数合并对象键路径

带有联合参数的静态大小数组

使用axios在ngOnInit中初始化列表

返回具有递归属性的泛型类型的泛型函数

为什么有条件渲染会导致material 自动完成中出现奇怪的动画?

vue-tsc失败,错误引用项目可能无法禁用vue项目上的emit

避免混淆两种不同的ID类型

tailwind css未被应用-react

try 使Angular依赖注入工作

将布尔值附加到每个对象特性

如何通过属性名在两个泛型数组中找到匹配的对象?

如何在不违反挂钩规则的情况下动态更改显示内容(带有状态)?

在抽象类构造函数中获取子类型

字符串文字联合的分布式条件类型

设置不允许相同类型的多个参数的线性规则

无法缩小深度嵌套对象props 的范围

是否可以定义引用另一行中的类型参数的类型?

仅当定义了值时才按值筛选数组

如何在由函数参数推断的记录类型中具有多个对象字段类型