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

Why I need any type in typescript?

我们在打字稿中有一个简单的方法

function identity(arg) {
    return arg;
}

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

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

此方法提供了一个参数,returns 它适用于任何类型(int、string、bool 等)。

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

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

示例:

var var1: any;
var var2: Object;

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

正如您在示例中看到的那样,您可以随心所欲地处理 var1,但不能乱用 var2,除了它的官方成员。

在您的函数中,您可以随心所欲地使用 arg,但是如果您为其指定类型,那么您将不得不使用该类型的成员。

在您的特定情况下,这无关紧要。 但是

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

Any 是来自 TypeScript 的逃生口,它的意思是“我不知道这是什么类型,所以我用它做的任何事情都是可以接受的,它上面的任何 属性 隐式存在(并且还有一个任何类型),我可以用任何参数调用它,我也可以 new 它。

建议您尽量减少对 any 的使用,无论是隐式的还是显式的,因为那样您会失去 TypeScript 提供的一些好处。