首页 > 解决方案 > 为什么要在 TypeScript 中声明“任何”返回类型?

问题描述

例如:

function getUserInput(input: any): any {
    return input
}

宣称“任何东西都可以退货”似乎很愚蠢。目的是什么?

标签: typescript

解决方案


它对懒惰和无知的人有用。

但不要把这当作咆哮!

有时您(或您的客户/老板)“需要”懒惰打字。当实际类型太复杂时,您需要快速编写一些东西,正如 artem 的回答中已经指出的那样。

它可以允许编码的灵活性。(尽管它最终可能导致糟糕的代码库)

此外,您很可能完全不知道某些 API 调用或 javascript 函数的实际返回类型,这对您来说是一个黑盒子。也许它动态地构造一个对象并有几十个可能的返回结构。

例如:eval如果(经过清理的)输入可以是各种 json 表达式、数字或字符串等,您将如何键入函数的结果?

当你开始写object | number | string | boolean | null时,你想写any,以提高可读性。

但是,当然,您应该尽量避免这种情况,这被认为是不好的做法。

无论如何,我认为在某些现实世界场景中错过这个语言功能会使事情变得复杂。

编辑:我差点忘了,但我认为 TypeScript必须具有此功能或根据其规范的类似功能:每个 JavaScript 代码都应该是“有效的”TypeScript(编译器很乐意接受任何 JS 代码作为 TypeScript,然后简单地转它作为相同的 JS 代码,具有正确的编译器选项)。

在这样的 JS-TS 代码中,大多数绑定必须被隐式类型化any适应这种情况。


推荐阅读