为什么要在TypeScript中声明“任意”返回类型?

时间:2019-01-24 00:09:08

标签: typescript

例如:

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

声明“任何东西都可以返回”似乎很愚蠢。目的是什么?

2 个答案:

答案 0 :(得分:5)

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

但是不要以为这是!

有时候,您(或您的客户/老板)“需要” 懒惰打字。如artem的答案中所述,当实际类型过于复杂时,您需要快速编写一些内容。

它可以允许灵活地编码。 (尽管最终可能会导致代码基础不佳)

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

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

为了便于阅读,开始写object | number | string | boolean | null时,您想改写any

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

无论如何,我认为在某些实际情况下错过此语言功能会使事情复杂化。

EDIT:我几乎忘记了,但是我认为TypeScript 必须具有此功能或与它的规范类似的功能:每个JavaScript代码都应该是“有效的” TypeScript(编译器很乐意接受任何JS代码作为TypeScript,并使用正确的编译器选项将其转换为相同的JS代码)。

在这样的JS-TS代码中,大多数绑定必须隐式键入any才能适应这种情况。

答案 1 :(得分:2)

没有必要对最初使用TypeScript编写的代码执行此操作。

例如,当必须使用已经在Javascript中实现的getUserInput()函数时,有时在实际返回类型不明显的情况下,可以将带有any返回类型的声明用作快捷方式,而且您不想花时间事先弄清楚在哪种情况下确切返回哪种类型。