TypeScript 的发展与基本语法 (一)| 青训营笔记

78 阅读4分钟
这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天✌

课堂笔记


本堂课重点内容:

  • TypeScript 历史及定义解析
  • TypeScript 优势解读
  • TypeScript 练习工具

详细知识点介绍

1.为什么是TypeScript

首先来看看JavaScript和TypeScript的区别

JavaScript: 动态类型:在执行阶段才能确认类型匹配。

类似的还有Java、python、C++、#C。

TypeScript:

静态类型:在编译期间或执行前就能确认类型匹配,编写代码时需要定义变量的类型。

共同点: 都是弱语言,一个变量可以赋予不同数据类型的值,会进行隐式的类型转换。

特点:

Typescript特点:

静态类型
  • 可读性增强:基于语法解析TSDoc,ide增强。
  • 可维护性增强:在编译阶段暴露大部分错误。(多人合作的大型项目中,获得更好的稳定性和开发效率)
JS的超集
  • 包含于兼容所有JS特性,支持共存。
  • 支持渐进式引入与升级。

2.基本语法

1.基础数据类型

image.png

等于

image.png

其中:

  • boolean(布尔类型):表示逻辑值:true和false。
  • number(数字类型):双精度64位浮点值。它可以用来表示整数和分数,除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。
  • string(字符串类型):使用双引号( ")或单引号(')表示字符串。使用模版字符串,它可以定义多行文本和内嵌表达式,以反引号包围( `),并且以${ expr }这种形式嵌入表达式。
  • 数组类型:第一种:可以在元素类型后面接上 [],表示由此类型元素组成的一个数组;第二种,使用数组泛型,在元素类型后面接上Array<元素类型>
  • void类型:无类型,只能赋予undefined和null。

2.对象数据类型

接口(interface): 在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范。在程序设计中,接口起到一种限制和规范的作用。

命名规范
  • 接口名前加上大写I前缀
  • 接口名一般首字母大写
属性
  • readonly:只读属性,约束属性不可在对象初始化外赋值(在对象的属性前加该关键字)。
  • [key:类型]:任意属性,约束所有对象属性都必须是该属性的子类型。
  • ?:可选属性,定义该属性可以不存在(即可缺省)。

举例

1.定义类型及对象 image.png

分析:

image.png

3.函数类型

TS中有两种常见的类型声明的方式

在JS中函数的常见用法: image.png

TS中:

  • 函数声明:直接在函数上进行类型的补充。

image.png

  • 函数表达式:给函数变量赋值一个函数的类型声明。

image.png 两者都是针对入参和出参而言。

4.函数重载:

定义:

具备不同参数的同名函数。

特点:
  • 名称相同
  • 参数不同(包括参数类型、个数不同)
组成:
  • 函数声明
  • 函数体

image.png

目的就是第一个参数是date时,返回Date对象;是string的话,则返回时间戳字符串。

5.数据类型:

image.png 6.TypeScript补充类型:

  • null:表示对象缺失,无赋值。
  • undefined:初始化变量一直未定义的值;
  • any(任意类型):声明未any的变量可以赋予任意类型的值,但是Object类型的变量只可赋任意值 ,而不能在它上面调用任意的方法。
  • enum(枚举类型):用于定义数值集合,支持枚举值到枚举名的正、反向映射。
  • generics(泛型):指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
实例

image.png

泛型:

①泛型函数 T为泛型:可理解为被定义的一个未知类型的变量 taeget:变量T的类型 image.png

②泛型接口、泛型类 image.png

③泛型约束、泛型参数默认类型 image.png

泛型约束:使用了 extends 约束了泛型 T 必须为string类型。

泛型参数默认类型:当使用泛型时没有在代码中直接指定类型参数,从实际值参数中也无法推测出时,这个默认类型就会起作用。

④类型别名、类型断言 image.png 类型断言相当于其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。

课后个人总结

容易混淆的点:JS和TS概念上的区别 难点:泛型的理解与应用

引用参考

www.tslang.cn/docs/handbo…

(256条消息) typeScript泛型_夜轩紫语的博客-CSDN博客_typescript 泛型