🎁TypeScript 基础
00 分钟
2022-8-17
2022-9-15
type
status
date
slug
summary
tags
category
icon
password
Edited
Sep 15, 2022 01:15 PM
Created
Aug 16, 2022 12:38 PM

类型详解

接口和对象类型

 

数组

 

函数

函数重载

重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
如果参数类型不同,则参数类型应设置为 any
参数数量不同你可以将不同的参数设置为可选。
 

联合类型 & 交叉类型

可选择多个中的一个作为其类型
多种类型的集合,联合对象将具有所联合类型的所有成员
 

Class类

引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖

类的修饰符:

  • public
    • 可以让你定义的变量 内部访问 也可以外部访问 如果不写默认就是public
  • private
    • 代表定义的变量私有的只能在内部访问 不能在外部访问
  • protected
    • 代表定义的变量私有的只能在内部和继承的子类中访问 不能在外部访问

static 静态属性 和 静态方法:

用static 定义的属性和方法 不可以通过this 去访问 只能通过类名去调用

存取器

使用 gettersetter可以改变属性的赋值和读取行为

interface 定义 类

抽象类

可以把他作为一个基类-> 通过继承一个派生类去实现基类的一些方法
抽象类无法被实例化 定义的抽象方法必须在派生类实现
 

元组

元组(Tuple)是固定数量的不同类型的元素的组合
元组的好处在于可以把多个元素作为一个单元传递。如果一个方法需要返回多个值,可以把这多个值作为元组返回,而不需要创建额外的类来表示
 

枚举

通过enum关键字定义我们的枚举
例如 红绿蓝 Red = 0 Green = 1 Blue= 2 分别代表红色0 绿色为1 蓝色为2

字符串枚举

字符串枚举可以很好的序列化

异构枚举

枚举可以混合字符串和数字成员

接口枚举

const枚举

let 和 var 都是不允许的声明只能使用const
 

never类型

TypeScript将使用 never 类型来表示不应该存在的状态
返回never的函数必须存在无法达到的终点(必定抛出异常,死循环….

never 与 void 的差异

  • void类型只是没有返回值 但本身不会出错
  • never类型只会抛出异常没有返回值
 

symbol类型

自ECMAScript 2015起,symbol成为了一种新的原生类型,就像numberstring一样
可以传递参做为唯一标识 只支持 string 和 number类型的参数
Symbol的值是唯一的

symbol定义的属性的获取

symbol定义的属性通过正常遍历是拿不到的:
获取方法:

Symbol.iterator 迭代器 和 生成器 for of

支持遍历大部分类型迭代器 arr nodeList argumetns set map 等
 

泛型

泛型在TypeScript 是很重要的东西

函数泛型

泛型接口

对象字面量泛型

泛型类

泛型约束

我们期望在一个泛型的变量上面,获取其length参数,但是,有的数据类型是没有length属性的

使用keyof约束对象

使用了TS泛型和泛型约束。首先定义了T类型并使用extends关键字继承object类型的子类型,然后使用keyof操作符获取T类型的所有键,它的返回 类型是联合 类型,最后利用extends关键字约束 K类型必须为keyof T联合类型的子类型
 

类型推论

我声明了一个变量但是没有定义类型
TypeScript会在没有明确的指定类型的时候推测出一个类型,这就是类型推论
 

类型别名

type 关键字(可以给一个类型定义一个名字)多用于符合类型
 

tsconfig.json配置文件

文件可通过下面命令生成

常用的配置项:

  • target
    • 指定编译js 的版本例如es5 es6
  • allowJS
    • 是否允许编译js文件
  • removeComments
    • 是否在编译过程中删除文件中的注释
  • strict
    • 严格模式
  • module
    • 默认common.js 可选es6模式 amd umd 等

配置详解

 

了解

void 和 undefined 和 null 最大的区别

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 string 类型的
 

any和unknown的区别

unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给unknown
unknow类型比any更加严格当你要使用any 的时候可以尝试使用unknow
如果是any类型在对象没有这个属性的时候还在获取是不会报错的,而如果是unknow 是不能调用属性和方
 

内置对象

ECMAScript内置对象

BooleanNumberstringRegExpDateError

DOM & BOM内置对象

DocumentHTMLElementEventNodeList 等对象

Promise内置对象

函数定义返回promise 语法规则:Promise<T> 类型

其他内置对象

 

VSCode直接运行TypeScript

1. 安装插件 Code Runner
2. 下载ts-node

问题

如果遇到 Error: Cannot find module 'typescript’问题
请更新一下typescript
 

参考链接:
  1. (22条消息) typeScript_小满zs的博客-CSDN博客
 
上一篇
TypeScript 进阶
下一篇
一些一直在使用的软件

评论
Loading...