序列化过程:序列化操作的时候系统会把当前类的serialVersionUID写入到序列化文件中,当反序列化时系统会去检测文件中的serialVersionUID,判断它是否与当前类的serialVersionUID一致,如果一致就说明序列化类的版本与当前类版本是一样的,可以反序列化成功,否则失败。

IDEA设置:

微信截图_20211011150411.png

Alt+Enter即可显示:

微信截图_20211012172051.png

扩展运算符,是在ES6中新增加的内容,它可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造字面量对象时将对象表达式按照key-value的方式展开。用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中。

字面量一般指[1,2,3]或者{name:’chuichui’}这种简洁的构造方式,多层嵌套的数组和对象三个点就无能为力了。

复制

1
2
3
4
5
6
7
8
9
10
11
12
13
// 对象的复制
let person = {name: "Amy", age: 15}
let someone = { ...person }
someone // {name: "Amy", age: 15}

// 数组的复制
let personarr = ["hello"]
let someonearr = { ...personarr }
someonearr // ["hello"]

let foo = { ...['a', 'b', 'c'] };
foo
// {0: "a", 1: "b", 2: "c"}
阅读全文 »

let 与 const

参考:ES6 let 与 const

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: letconst

let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

阅读全文 »

TypeScript 声明文件

TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaScript 库和模块信息的声明文件。通过引用这个声明文件,就可以借用 TypeScript 的各种特性来使用库文件了。

声明文件

声明文件以 .d.ts 为后缀,例如:

1
runoob.d.ts

声明文件或模块的语法格式如下:

1
2
declare module Module_Name {
}

TypeScript 引入声明文件语法格式:

1
/// <reference path = "runoob.d.ts" />
阅读全文 »

模块是在其自身的作用域里执行,并不是在全局作用域,这意味着定义在模块里面的变量、函数和类等在模块外部是不可见的,除非明确地使用 export 导出它们。必须通过 import 导入其他模块导出的变量、函数、类等。

两个模块之间的关系是通过在文件级别上使用 importexport 建立的。

模块导出使用关键字 export 关键字,语法格式如下:

1
2
3
4
// 文件名 : SomeInterface.ts 
export interface SomeInterface {
// 代码部分
}

要在另外一个文件使用该模块就需要使用 import 关键字来导入:

1
import someInterfaceRef = require("./SomeInterface");
阅读全文 »

定义

TypeScript 中命名空间使用 namespace 来定义,语法格式如下:

1
2
3
4
namespace SomeNameSpaceName { 
export interface ISomeInterfaceName { }
export class SomeClassName { }
}

以上定义了一个命名空间 SomeNameSpaceName,如果我们需要在外部可以调用 SomeNameSpaceName 中的类和接口,则需要在类和接口添加 export 关键字。

要在另外一个命名空间调用语法格式为:

1
SomeNameSpaceName.SomeClassName;

如果一个命名空间在一个单独的 TypeScript 文件中,则应使用三斜杠 /// 引用它,语法格式如下:

1
/// <reference path = "SomeFileName.ts" />
阅读全文 »

对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等,如下实例:

1
2
3
4
5
6
7
8
var object_name = { 
key1: "value1", // 标量
key2: "value",
key3: function() {
// 函数
},
key4:["content1", "content2"] //集合
}

实例:

1
2
3
4
5
6
7
var sites = { 
site1:"Runoob",
site2:"Google"
};
// 访问对象的值
console.log(sites.site1)
console.log(sites.site2)
阅读全文 »

TypeScript 接口定义如下:

1
2
interface interface_name { 
}

需要注意接口不能转换为 JavaScript。 它只是 TypeScript 的一部分。

实例:

以下实例中,我们定义了一个接口 IPerson,接着定义了一个变量 customer,它的类型是 IPerson。

customer 实现了接口 IPerson 的属性和方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
interface IPerson { 
firstName:string,
lastName:string,
sayHi: ()=>string
}

var customer:IPerson = {
firstName:"Tom",
lastName:"Hanks",
sayHi: ():string =>{return "Hi there"}
}

console.log("Customer 对象 ")
console.log(customer.firstName)
console.log(customer.lastName)
console.log(customer.sayHi())

var employee:IPerson = {
firstName:"Jim",
lastName:"Blakes",
sayHi: ():string =>{return "Hello!!!"}
}

console.log("Employee 对象 ")
console.log(employee.firstName)
console.log(employee.lastName)
阅读全文 »

TypeScript 是面向对象的 JavaScript。

类描述了所创建的对象共同的属性和方法。

TypeScript 支持面向对象的所有特性,比如 类、接口等。

TypeScript 类定义方式如下:

1
2
3
class class_name { 
// 类作用域
}
阅读全文 »

联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。

注意:只能赋值指定的类型,如果赋值其它类型就会报错。

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

1
Type1|Type2|Type3

实例

声明一个联合类型:

1
2
3
4
5
var val:string|number 
val = 12
console.log("数字为 "+ val)
val = "Runoob"
console.log("字符串为 " + val)
阅读全文 »

创建元组

元组中允许存储不同类型的元素,元组可以作为参数传递给函数。

创建元组的语法格式如下:

1
var tuple_name = [value1,value2,value3,…value n]

实例:

1
2
3
4
5
6
7
// 声明一个元组并初始化:
var mytuple = [10,"Runoob"];

// 或者我们可以先声明一个空元组,然后再初始化:
var mytuple = [];
mytuple[0] = 120
mytuple[1] = 234
阅读全文 »

Map 对象保存键值对,并且能够记住键的原始插入顺序。

任何值(对象或者原始值) 都可以作为一个键或一个值。

创建

使用 Map 类型和 new 关键字来创建 Map:

1
let myMap = new Map();

初始化 Map,可以以数组的格式来传入键值对:

1
2
3
4
let myMap = new Map([
["key1", "value1"],
["key2", "value2"]
]);
阅读全文 »

数组

TypeScript 声明数组的语法格式如下所示:

1
2
var array_name[:datatype];        //声明 
array_name = [val1,val2,valn..] //初始化

或者直接在声明时初始化:

1
var array_name[:data type] = [val1,val2…valn]

如果数组声明时未设置类型,则会被认为是 any 类型,在初始化时根据第一个元素的类型来推断数组的类型。

阅读全文 »

Number对象

TypeScript 与 JavaScript 类似,支持 Number 对象。

Number 对象是原始数值的包装对象。

语法

1
var num = new Number(value);

注意: 如果一个参数值不能转换为一个数字将返回 NaN (非数字值)。

阅读全文 »