Skip to content

TypeScript 简介

TypeScript 是由微软开发的自由和开源的编程语言,TS 是 JS 的一个超集,就是在 JS 原有的基础上多了一些扩展特性,

多出来的主要是静态类型检查(编译期校验,思路接近 Java 等静态语言,但 TS 是渐进式类型,可按需标注),以及对 ECMAScript 新特性的跟进支持

新数据类型

基础数据类型:Number、String、Boolean、Undefined、Null、Symbol

复杂数据类型:Object、Array、Function、Date、Map、Set、RegExp

TS 新增拓展类型:枚举(enum)、元组(tuple)、任意类型(any)、不认识的值(unknown)、从不出现的值(never)、函数无返回值(void)

类型注解

当不确定变量的类型时,显式的给变量定义类型(当类型推断无法推断出变量类型时,才使用类型注解)

基础类型不需要类型注解(因为会 TS 会自动推断出来)

类型推断

定义有初始值变量时,无需指定变量的类型,TS 会自动推断出类型 (推断的类型为赋值的数据类型)

类型守卫

TS 类型守卫可以用来帮助 TS 编译器更好地推断出变量的类型,是在编译时检查接口定义而不是运行时强制检查

类型断言

有时候在某些特殊情况下,typescript 无法推断变量的具体类型,但是我们作为开发者,根据代码的具体情况,是可以明确知道这个变量的类型的,

那么我们可以通过类型断言告诉 typescript 这个变量的类型。

断言的两种方式:使用 as 关键字的方式断言、在变量的前面使用 <类型> 的方式断言

接口(Interface)

TS 接口是一种协议约束,接口用于约束对象的属性和方法,是在编译时检查接口定义而不是运行时强制检查

泛型(Generics)

TS 的泛型(Generics)是一种在定义函数、接口、类时,用来指定一个或多个类型参数的特性。泛型可以帮助我们创建可重用的组件,这些组件可以处理多种类型的数据。

多态

TS 多态,指的是同一类型对象具有不同表现行为

定义:为不同数据类型的实体(子类实体)提供统一的接口(父类类型的引用)

示例:函数的形参只写父类引用(统一参数),且此函数接受父类实例对象和任意子类实例对象,以此来统一按需调用不同的类的相同方法,定义变量,变量的类型为父类,这个变量赋的目标值可以是实例化的子类

类型声明文件

TS 的类型声明文件(.d.ts)是一种声明文件,它用于描述 JavaScript 库的类型信息。

TS 会按 tsconfiginclude 等配置加载 .d.ts 声明文件

使用场景

因为 TS 最终会编译成 JS 去工作,所以任何一种 JS 运行环境都支持,

包括:浏览器应用,node应用,reactNative,桌面应用Electron等,它们都可以使用TypeScript来开发

注意

TypeScript 最终会编译成原始的 JavaScript


本目录结构

以下为重构后的阅读顺序:各章正文尽量保留原小节,仅靠分节串联。

编号主题
02数据类型与类型注解、推断
03类型断言、类型守卫与二者对比
04类、修饰符与多态
05泛型、装饰器、interface 与 type、命名空间
06dts 声明文件、内置 API(汇总与示例)、常见错误
07类型实战专题(体操 · Vue · React · AI)
08TypeScript 知识体系导图(检索提要,长文)