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 去访问 只能通过类名去调用
存取器
使用
getter
和 setter
可以改变属性的赋值和读取行为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
成为了一种新的原生类型,就像number
和string
一样
可以传递参做为唯一标识 只支持 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内置对象
Boolean
、Number
、string
、RegExp
、Date
、Error
DOM & BOM内置对象
Document
、HTMLElement
、Event
、NodeList
等对象Promise内置对象
函数定义返回
promise
语法规则:Promise<T>
类型其他内置对象
VSCode直接运行TypeScript
1. 安装插件 Code Runner
2. 下载
ts-node
问题
如果遇到 Error: Cannot find module 'typescript’问题
请更新一下typescript
参考链接:
- 作者:JinSo
- 链接:https://jinso365.top/article/ts-basis
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。