首先,在TS中,只有两种数据结构,数组[](a[0] = 0,a[1] = 1)typescript循环数组,字典{}(a[“0”] = 0,a[“1” ”] = 1),然后还有两者的结合,枚举也是一个道理。
该语言提供了一个用于遍历对象的套接字(数据结构对象中的 var key)
通过这个socket,可以看到枚举是如何存储的
enum fruit
{
apple,banana
}
for(var key in fruit)
{
console.log(key);
}
输出如下:
0
1
apple
banana
有两种类型的输出值:键和数字。 显然typescript循环数组,key就是我们定义的枚举名,而number可能就是枚举值。
enum fruit
{
apple =3,banana =5
}
for(var key in fruit)
{
console.log(key);
}
输出如下
3
5
apple
banana
修改代码并输出,证实了我们的猜测。 枚举的本质是存储枚举名和枚举值对象。 事实上,这两个属性作为键相互对应,即可以通过枚举名找到它们。 枚举值,反之,也可以通过枚举值获取枚举名称
for(var key in fruit)
{
console.log(key);
}
输出如下
apple
banana
3
5
这样我们就已经把枚举当成一个对象了,只需要判断for给定的key就是我们要使用的枚举名。枚举名和枚举值,一个是数字,一个是数字文本。 该语言提供了强大的判断socket isNaN(变量)的方法。 这个socket可以接收任意类型的对象,然后判断是否是数字,并且可以识别输入的字符串内容是否是数字
接下来我们可以遍历枚举
for(var key in fruit)
{
var keyToAny:any = key;
if(isNaN(keyToAny))
{
var fruitAnyType:any = fruit[key];
var fruitEnum:fruit = fruitAnyType;
console.log(fruitEnum);
}
}
输出
3
5
如果你想获取所有的枚举名也可以,反之亦然
for(var key in fruit)
{
var keyToAny:any = key;
if(!isNaN(keyToAny))
{
var fruitAnyType:any = fruit[key];
var fruitEnum:fruit = fruitAnyType;
console.log(fruitEnum);
}
}
发表评论