0%

TypeScript学习笔记

TypeScript(Javascript)是应用开发的大趋势!

Learn from this

更新:发现贵系出了很好的教程,好耶!

Javascript语言基础

Typescript语言基础

类型

常用的类型都有。

  • Array类型:number[], Array<number>

  • enum类型

  • any类型:一夜回到JS

  • unknown类型:所有类型都可以赋值给 unknown,unknown 类型只能被赋值给 any 类型和 unknown 类型本身。直观地说,这是有道理的:只有能够保存任意类型值的容器才能保存 unknown 类型的值。毕竟我们不知道变量 value 中存储了什么类型的值。

  • tuple类型

  • null, undefined

  • never类型:never 类型表示的是那些永不存在的值的类型。 例如,never 类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型。

    使用 never 避免出现新增了联合类型没有对应的实现,目的就是写出类型绝对安全的代码。

断言

  • 尖括号语法
  • as语法

TS的类型检查和类型推断做的真全啊。

联合类型和交叉类型

|,&

函数

  • 可选参数:age?: number

  • 可变参数:...items

  • 匿名函数(箭头函数):() => {}

语法

1
2
3
4
5
6
7
8
9
10
11
// 循环
let colors: string[] = ["red", "green", "blue"];
for (let i of colors) {
console.log(i);
}

/*
`for in` loops over enumerable property names of an object.

`for of` (new in ES6) does use an object-specific iterator and loops over the values generated by that.
*/

对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 对象解构
let person = {
name: "Semlinker",
gender: "Male",
};
let { name, gender } = person;

// 对象展开
let person = {
name: "Semlinker",
gender: "Male",
address: "Xiamen",
};
// 组装对象
let personWithAge = { ...person, age: 33 };
// 获取除了某些项外的其它项
let { name, ...rest } = person;

可选/只读属性

1
2
3
4
interface Person {
readonly name: string;
age?: number;
}

此外 TypeScript 还提供了 ReadonlyArray<T> 类型,它与Array<T>相似,只是把所有可变方法去掉了。

  • 继承:extends
  • public/private
  • 私有字段:以#开头,是ES6标准,在运行阶段不可访问,而不仅是编译阶段

泛型

摸了

装饰器

Python中的利器啊。