TypeScript学习笔记 | 青训营

64 阅读4分钟

TypeScript学习笔记 | 青训营

1 TS VS JS

TS:是JavaScript的超集,用于解决大型项目代码的复杂性,强类型,支持静态和动态类型,可以在编译期间发现并纠正错误,不允许改变变量的数据类型。

JS:一种脚本语言,用于创建动态网页,是动态弱类型语言,只能运行时发现错误,变量可以被赋值成不同的类型。

2 数据类型

  1. boolean:布尔值,true 或 false。
  2. number:数字类型,包括整数和浮点数。
  3. string:字符串类型。
  4. array:数组类型。可以使用 元素类型[] 或者 Array<元素类型> 来表示数组。
  5. tuple:元组类型,表示一个已知元素数量和类型的数组,各元素的类型不必相同。
  6. enum:枚举类型,用于定义数值集合。
  7. any:任意类型,可以是任何类型的值。
  8. void:表示没有任何类型,常用于标识函数的返回值不能是undefined或null。
  9. nullundefined:分别表示值的空缺和未定义。
  10. never:表示的是那些永不存在的值的类型。
  11. object:表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。

3 类型注解和类型推断

TypeScript的一个重要特性就是类型系统。类型注解是一种轻量级的为函数或变量添加约束的方式。

例如,这样定义一个变量:let count: number; 这里的: number就是类型注解,我们告诉TypeScript这个变量的类型是数字。

TypeScript也有类型推断,如果没有明确地指定一个变量的类型,TypeScript会尝试分析你的代码,然后自动地为你添加类型。

4 接口

定义:接口是为了定义对象类型

特点:

  1. 类型检查器:接口在TypeScript中主要用于类型检查。当你定义了一个接口后,你可以用它来描述对象的形状,TypeScript编译器会检查对象是否符合接口的形状。
  2. 可选属性:接口的属性不必都必须存在。有些是可选的,你可以在属性名后面加上?来表示这个属性是可选的。
  3. 只读属性:你可以使用readonly关键字将接口的属性设置为只读,这意味着你不能修改这些属性。
  4. 额外的属性检查:当你将对象字面量赋值给变量或作为参数传递时,如果对象字面量有任何在接口中没有定义的属性,TypeScript编译器会给出错误提示。
  5. 函数类型:接口也可以描述函数类型。你可以定义一个接口,它有一个调用签名,就像一个函数声明一样。
  6. 可索引的类型:接口可以描述那些能够"通过索引得到"的类型,比如a[10]ageMap["daniel"]
  7. 类类型:你可以使用接口来明确地强制一个类去符合某种契约。
  8. 继承接口:和类一样,接口也可以相互继承。这使得我们可以从一个接口里复制成员到另一个接口里。

5 类

定义:写法和JS差不多,增加了一些定义

特点:

  1. 类声明:使用class关键字来声明一个类,可以在类中定义属性和方法。
  2. 继承:通过使用extends关键字,可以实现类之间的继承关系。子类可以继承父类的属性和方法,并且可以重写父类的方法。
  3. 封装:通过使用publicprivateprotected等访问修饰符,可以控制类中属性和方法的访问权限。public表示公共访问,可以在类的内部和外部访问;private表示私有访问,只能在类的内部访问;protected表示受保护访问,只能在类的内部和子类中访问。
  4. 实例化:使用new关键字可以创建类的实例,通过实例可以访问类中定义的属性和方法。
  5. 类型注解:TypeScript可以为类的属性和方法添加类型注解,以提供静态类型检查。
  6. 接口实现:可以使用接口来定义类的结构,并通过实现接口来确保类符合接口的要求。
  7. 静态属性和方法:使用static关键字可以定义类的静态属性和方法,静态属性和方法属于类本身,而不是类的实例。

6 总结

由于我学习过JavaScript基础,在听课的时候还是能理解这些新特性以及新知识,而且TypeScript是JavaScript的超集,所以JavaScript基础很有必要。

TypeScript支持ECMAScript 6及以上的语法和特性,所以建议熟悉ES6+的新特性,如箭头函数、模块化、解构赋值等。

我们可以通过官方文档和项目来学习typescript,在实际的开发过程中理解和掌握其使用,尝试将JavaScript项目迁移到typescript或者重新使用typescript进行开发等。