可以键入JavaScript变量吗?
是否有一种机制来键入JavaScript变量,以便确定赋值返回的数据类型?由于JavaScript是一种动态语言,这是不可能的?JavaScript变量可以保存许多数据类型:数字、字符串、数组和对象 我们可以使用可以键入JavaScript变量吗?,javascript,Javascript,是否有一种机制来键入JavaScript变量,以便确定赋值返回的数据类型?由于JavaScript是一种动态语言,这是不可能的?JavaScript变量可以保存许多数据类型:数字、字符串、数组和对象 我们可以使用typeof找出变量的类型 if(typeof myvar === 'number') { // code you want } 或者您可以使用Object.prototype.toString,这样您就不必识别对象和基本类型之间的差异 > Object.prototyp
typeof
找出变量的类型
if(typeof myvar === 'number') {
// code you want
}
或者您可以使用Object.prototype.toString
,这样您就不必识别对象和基本类型之间的差异
> Object.prototype.toString.call(80)
"[object Number]"
> Object.prototype.toString.call("samouray")
"[object String]"
希望这会有所帮助。您可以在开发时使用预编译器添加类型(和其他功能),例如使用TypeScript:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter : Greeter = new Greeter("world");
TypeScript是JavaScript的一个超级集合(意味着您可以按原样使用现有JavaScript代码并将其传递给TypeScript编译器),其开发目的是为开发人员提供类型安全性、更简单的继承等。它编译为纯JavaScript
为了给人留下第一印象,你可以亲身体验
在运行时获取实际类型
由于TypeScript编译为纯JavaScript,因此不能使用typeof
获取TypeScript中声明的类型名称(这将返回例如上面定义的问候者的对象)。要解决此问题,需要以下JavaScript方法:
function getClassName(obj) {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec(obj["constructor"].toString());
return (results && results.length > 1) ? results[1] : "";
}
有关更多信息,请参阅我在上面找到代码段的地方。您可以使用TypeScript,它是JavaScript的超集,可向下转换为JavaScript。请看:有一种感觉,它将在使用中更多,因为Angular 2将使用它