typescript - 为什么要在 TypeScript 中声明“任何”返回类型?
问题描述
例如:
function getUserInput(input: any): any {
return input
}
宣称“任何东西都可以退货”似乎很愚蠢。目的是什么?
解决方案
它对懒惰和无知的人有用。
但不要把这当作咆哮!
有时您(或您的客户/老板)“需要”懒惰打字。当实际类型太复杂时,您需要快速编写一些东西,正如 artem 的回答中已经指出的那样。
它可以允许编码的灵活性。(尽管它最终可能导致糟糕的代码库)
此外,您很可能完全不知道某些 API 调用或 javascript 函数的实际返回类型,这对您来说是一个黑盒子。也许它动态地构造一个对象并有几十个可能的返回结构。
例如:eval
如果(经过清理的)输入可以是各种 json 表达式、数字或字符串等,您将如何键入函数的结果?
当你开始写object | number | string | boolean | null
时,你想写any
,以提高可读性。
但是,当然,您应该尽量避免这种情况,这被认为是不好的做法。
无论如何,我认为在某些现实世界场景中错过这个语言功能会使事情变得复杂。
编辑:我差点忘了,但我认为 TypeScript必须具有此功能或根据其规范的类似功能:每个 JavaScript 代码都应该是“有效的”TypeScript(编译器很乐意接受任何 JS 代码作为 TypeScript,然后简单地转它作为相同的 JS 代码,具有正确的编译器选项)。
在这样的 JS-TS 代码中,大多数绑定必须被隐式类型化以any
适应这种情况。
推荐阅读
- javascript - 使用文本框自定义多选 - 使用 contenteditable
- r - 将下拉按钮链接到闪亮的数据
- javascript - Zapier 中的 JavaScript 使用分页循环 API 调用
- python - 操作 Pandas 数据框的数据
- c# - 解释这种类型的演员?
- javascript - Spring Boot WebSocket 连接到“ws://127.0.0.1:8081/getUsersList/”失败:WebSocket 握手期间出错:意外响应代码:200
- python-3.x - 神经网络适用于 XOR,但不适用于 MNIST 数据集
- amazon-web-services - 如何将 aws ec2 windows 机器与已安装的应用程序捆绑在一起
- tensorflow - Tensorflow:向 LSTM 添加前馈
- angular - Angular i18n AOT 编译 - 使用 nginx 的 CI 部署与使用 ng serve 的本地开发