为什么我需要打字稿中的任何类型?
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 提供的一些好处。
我们在打字稿中有一个简单的方法
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 提供的一些好处。