JS TypeScript的Map对象及联合类型实战

 更新时间:2022年08月24日 08:40:17   作者:黎燃​​​​​​​  
这篇文章主要介绍了JS TypeScript的Map对象及联合类型实战,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

一.TypeScript的Map对象

类型脚本映射对象。 map对象保存键值对,可以记住键的原始插入顺序。任何值(对象或原始值)都可以用作键或值。Map是ES6中引入的新数据结构。

Typescript使用地图类型和new关键字创建Map:

let myMap = new Map();

初始化映射,可以以数组的形式传入键值对:

let myMap = new Map([
        ["key1", "value1"],
        ["key2", "value2"]
    ]); 

Map对象相关功能和属性:

  • MapClear()–删除映射对象的所有键/值对。
  • MapSet()–设置键值对并返回映射对象。
  • MapGet()–返回与键对应的值。如果不存在,则返回undefined。
  • MapHas()–返回一个布尔值,用于确定映射是否包含与键对应的值。
  • MapDelete()–删除映射中的元素,如果删除成功则返回true,如果删除失败则返回false。
  • MapSize–返回映射对象键/值对的数目。
  • MapKeys()-返回一个迭代器对象,其中包含map对象中每个元素的键。
  • MapValues()–返回一个新的迭代器对象,其中包含map对象中每个元素的值。
let nameSiteMapping = new Map();

设置 Map 对象

nameSiteMapping.set("Google", 1);
nameSiteMapping.set("Runoob", 2);
nameSiteMapping.set("Taobao", 3);

获取键对应的值

console.log(nameSiteMapping.get("Runoob"));

判断 Map 中是否包含键对应的值

console.log(nameSiteMapping.has("Taobao"));   
console.log(nameSiteMapping.has("Zhihu"));  

返回 Map 对象键/值对的数量

console.log(nameSiteMapping.size);

删除 Runoob

console.log(nameSiteMapping.delete("Runoob"));  
console.log(nameSiteMapping);

移除 Map 对象的所有键/值对 , 清除 Map

nameSiteMapping.clear();           
console.log(nameSiteMapping);

使用 es6 编译:

tsc --target es6 test.ts

执行上述JavaScript代码,输出结果为:

2
true
false
3
true
Map { 'Google' => 1, 'Taobao' => 3 }
Map {}

1.1迭代 Map

地图对象中的元素按顺序插入。我们可以迭代map对象,每次迭代都返回[key,value]数组。

Typescript用于…Of来实现迭代:

let nameSiteMapping = new Map();
 
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("Runoob", 2);
nameSiteMapping.set("Taobao", 3);

迭代 Map 中的 key

for (let key of nameSiteMapping.keys()) {
    console.log(key);                  
}

迭代 Map 中的 value

for (let value of nameSiteMapping.values()) {
    console.log(value);                 
}

迭代 Map 中的 key => value

for (let entry of nameSiteMapping.entries()) {
    console.log(entry[0], entry[1]);   
}

使用对象解析

for (let [key, value] of nameSiteMapping) {
    console.log(key, value);            
}

二.TypeScript 联合类型

联合类型可以通过管道(|)将变量设置为多种类型。指定值时,可以根据设置的类型指定值。 注意:只能指定类型。如果分配了其他类型,将报告错误。

创建联合类型的语法格式如下:

Type1|Type2|Type3

声明一个联合类型:

var val:string|number 
val = 12 
console.log("数字为 "+ val) 
val = "Runoob" 
console.log("字符串为 " + val)

编译上述代码以获得以下JavaScript代码:

var val;
val = 12;
console.log("数字为 " + val);
val = "Runoob";
console.log("字符串为 " + val);

数字为 12 字符串为 Runoob

function disp(name:string|string[]) { 
        if(typeof name == "string") { 
                console.log(name) 
        } else { 
                var i; 
                for(i = 0;i<name.length;i++) { 
                console.log(name[i])
                } 
        } 
} 
disp("Runoob") 
console.log("输出数组....") 
disp(["Runoob","Google","Taobao","Facebook"])

上述代码输出结果为:

Runoob 输出数组.... Runoob Google Taobao Facebook

2.1扩展知识

对于联合类型数据,主要扩展了以下几点。 只能访问公共属性或方法 通常,使用关节类型是因为无法确定变量最终值的类型。 对于联合类型的变量或参数,如果无法确定其特定类型,则只能访问联合类型中所有类型通用的属性或方法。如果访问特定类型特有的属性或方法,将生成错误。

function sayRes(res: number | string) {
    if (res.length > 0) { // Error: 类型“number”上不存在属性“length”。
    }
}

2.2总结

  • 联合类型包含所有可能的变量类型;
  • 分配除联合类型变量之外的值将产生错误;
  • 在无法确定联合类型变量的最终类型之前,只能访问联合类型通用的属性和方法。

到此这篇关于JS TypeScript的Map对象及联合类型实战的文章就介绍到这了,更多相关JS Map对象 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 微信小程序添加插屏广告并设置显示频率(一天一次)

    微信小程序添加插屏广告并设置显示频率(一天一次)

    微信小程序今年新上线了插屏广告,设置和在代码库中接入都非常方便。今天通过本文给大家分享微信小程序添加插屏广告并设置显示频率(一天一次),需要的朋友可以参考下
    2019-12-12
  • JavaScript数组去重算法实例小结

    JavaScript数组去重算法实例小结

    这篇文章主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写、遍历、比较、排序等操作及算法改进相关实现技巧,需要的朋友可以参考下
    2018-05-05
  • 微信小程序之swiper轮播图中的图片自适应高度的方法

    微信小程序之swiper轮播图中的图片自适应高度的方法

    这篇文章主要介绍了微信小程序之swiper轮播图中的图片自适应高度的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • js实现随机点名器精简版

    js实现随机点名器精简版

    这篇文章主要为大家详细介绍了js实现随机点名器的精简版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • 如何自定义删除无依赖文件的webpack插件

    如何自定义删除无依赖文件的webpack插件

    通过自定义webpack插件,利用执行完成编译的封存阶段后,产生的产物module.fileDependencies,生成依赖的文件组,通过读文件的方式,将待扫描的文件组和有依赖关系的文件进行对比,这篇文章主要介绍了自定义删除无依赖文件的webpack插件,需要的朋友可以参考下
    2023-12-12
  • 用Golang运行JavaScript的实现示例

    用Golang运行JavaScript的实现示例

    这篇文章主要介绍了用Golang运行JavaScript的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 如何使用js查找数组中符合条件的元素

    如何使用js查找数组中符合条件的元素

    这篇文章主要给大家介绍了关于如何使用js查找数组中符合条件的元素,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-04-04
  • JavaScript获取本机IP地址的实现方法

    JavaScript获取本机IP地址的实现方法

    JavaScript本身受限于浏览器安全机制无法直接获取本机IP,但可通过WebRTC、Ajax请求等间接方式获取公网IP,本文介绍了多种使用JS获取IP的方法,需要的朋友可以参考下
    2025-10-10
  • 用一段js程序来实现动画功能

    用一段js程序来实现动画功能

    用一段js程序来实现动画功能...
    2007-03-03
  • 如何使用JavaScript检测空闲的浏览器选项卡

    如何使用JavaScript检测空闲的浏览器选项卡

    这篇文章主要介绍了如何使用JavaScript检测空闲的浏览器选项卡,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论