为什么要声明';任何';在TypeScript中返回类型?
例如:为什么要声明';任何';在TypeScript中返回类型?,typescript,Typescript,例如: function getUserInput(input: any): any { return input } 宣称“任何东西都可以退货”似乎很愚蠢。目的是什么?对于最初用TypeScript编写的代码,没有理由这样做 例如,当您必须使用已在Javascript中实现的getUserInput()函数时,当实际返回类型不明显时,有时可以使用带有any返回类型的声明作为快捷方式,你也不想事先花时间弄清楚在什么情况下返回的是什么类型。这对懒惰和无知的人很有用 但不要把这当成是一种咆
function getUserInput(input: any): any {
return input
}
宣称“任何东西都可以退货”似乎很愚蠢。目的是什么?对于最初用TypeScript编写的代码,没有理由这样做
例如,当您必须使用已在Javascript中实现的
getUserInput()
函数时,当实际返回类型不明显时,有时可以使用带有any
返回类型的声明作为快捷方式,你也不想事先花时间弄清楚在什么情况下返回的是什么类型。这对懒惰和无知的人很有用
但不要把这当成是一种咆哮
有时你(或你的客户/老板)“需要”在打字上懒惰。当实际类型太复杂时,您需要快速编写一些内容,正如artem在回答中所指出的那样
它可以允许编码的灵活性。(尽管最终可能会导致代码库不好)
此外,您可能完全不知道某个API调用或javascript函数的实际返回类型,这对您来说是一个黑盒子。也许它动态地构造了一个对象,并且有几十个可能的返回结构
例如:如果(经过清理的)输入可以是各种json表达式、数字或字符串等,您将如何键入eval
函数的结果
当您开始编写对象|数字|字符串|布尔|空
时,为了可读性,您希望改为编写任何
但当然,你应该尽量避免这种情况,这被认为是不好的做法
无论如何,我认为在某些现实场景中,错过这种语言功能会使事情变得复杂
编辑:我差点忘了,但是我认为TypeScript必须有这个特性,或者根据它的规范有一个类似的特性:每个JavaScript代码都应该是“有效的”TypeScript(编译器会乐意接受任何JS代码作为TypeScript,并简单地将其转换为相同的JS代码,使用正确的编译器选项)
在这样的JS-TS代码中,大多数绑定都必须隐式键入为any
,以适应这种情况