为什么我需要打字稿中的任何类型?

时间:2017-12-09 19:01:45

标签: .net typescript methods return-type any

我们在typescript中有一个简单的方法

function identity(arg) {
    return arg;
}

此方法提供一个参数并返回它,它将适用于任何类型(int,string,bool等)。 我们也可以用另一种方式声明这个方法:

 function identity(arg:any):any {
        return arg;
    }

此方法提供一个参数并返回它,它将适用于任何类型(int,string,bool等)。

这两种方式有什么区别?换句话说,使用any类型有什么好处?

2 个答案:

答案 0 :(得分:1)

在您的特定情况下,无所谓。的

  • 如果你有严格的标志(或者,通过扩展,noImplicitAny标志),它将为第一个而不是第二个抛出错误。因为不允许使用隐式 any。
  • 它们相同的原因是因为TypeScript无法推断出参数的类型或返回类型,因此它们都被推断为任何类型。

任何是来自TypeScript的逃生舱,它意味着“我不知道这是什么类型,所以我用它做的任何事都是可以接受的,它上面的任何属性都隐含存在(并且还有任何类型),I可以使用任何参数调用它,我也可以new

建议您最小化any的隐式或显式使用,因为这样会损失TypeScript提供的一些好处。

答案 1 :(得分:0)

any 喜欢一个匿名类型,而不是Object。使用any时,编译器会进行最小类型检查,因为它不知道变量的成员。

示例:

var var1: any;
var var2: Object;

var1.whatever(); // The compiler trusts you
var2.whatever(); // Compiler throws an error

正如您在示例中所看到的,您可以根据需要处理var1,但除了正式成员之外,您不能使用var2

在你的函数中,你可以随意使用arg,但是如果你为它指定了一个类型,那么你将必然会使用该类型的成员。