类型脚本映射对象。
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代码,输出结果为:
false
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总结
联合类型包含所有可能的变量类型;
分配除联合类型变量之外的值将产生错误;
在无法确定联合类型变量的最终类型之前,只能访问联合类型通用的属性和方法。
android 入口函数 android inputevent
事件的开始是从eventhub开始的,我们先来看下流程图事件派发的整个流程比较复杂,我们只看几个比较重要点的地方,从loopOnce开始void InputReader::loopOnce() {
int32_t oldGeneration;
int32_t timeoutMillis;
bool inputDevicesChanged = false;
Vecto
python如何隔行输出文本 python隔一个字符输出一个
python的spilt()方法可以有效将1个字符串分隔开,并以列表的形式进行输出。以下是具体的使用方法:str1 = "Hello world, My name is 王怕怕升职'"
str2 = str1.split() # 以空格为分隔符,全部分隔
str3 = str1.split(" ", 3) # 以空格为分隔符,分为4份
print(str2)
print(str3)
print(
VS2019编译python VS2019编译arm
第一步、远程连接arm打开vs2019 选择 【工具】-->【选项】-->【跨平台】连接远程arm 第二步、选择编译器 添加linux -GCC编译器 第三步、选择好后配置JSON文件{
"name": "Linux-GCC-Release",
"generator": "Unix Makefiles",
"configura
class DivisorIsZeroException extends Exception
public DivisorIsZeroException(String name)