TS常见操作符以及运算符
-
!
主要用于断言操作对象事非null和非undefined的时候,意思就是在改字段的可能值当中把null和undefined排除掉;
场景:比如有一个对象可能为null的情况下,用来躲过编译时期的错误提示;
-
?.
可选链,类似于取对象的属性或者方法,但是不同的是当引用为空的时候不会引起错误,当对象为null或者undefined时立即停止某些表达式的允许,直接返回undefined,停止下面的执行;可选链,可选链;
-
? :
表示属性可选,当一个属性可有可无的时候可以;
-
&
单个&的运算符是将多个类型合并成一个类型,通过&可以将现有的多个类型合并成一种类型;如果多个类型当中相同属性的类型不同,既是number又是string,那么最终结果变成never,因为没有一个数据同时属于这两种类型的;
-
|
当某个字段想要使用多个类型时,可以使用|运算符分割,比如某个字段可能为字符串,也可能为数字类型;也可以用于定义几个字面量类型,用来约束取值只能某几个值当中的一个;
-
??
当左侧的操作数为null或者undefined的时候,其返回右侧的操作数,否则返回左侧的操作数。与||运算符不一样的是,逻辑或会在左操作数为false才返回右侧操作数,包括0,NaN等;
工具类型关键词
-
Partial
主要用于把某个接口类型中点定义的属性变成可选的; -
Required
主要用于将某个接口当中的定义的属性变成必选的; -
typeof
typeof value 的值必须是 number, string,boolean,symbol等值,进行比较是,ts不会组织你与其他字符串进行比较; -
keyof
是ts当中的索引类型差选操作符,keyof T 会得到T当中对应的属性字段;用来限制某个属性是类型当中的其中之一的属性字段时;
-
in
用于遍历目标类型的公开属性名,可用于枚举类型和联合类型当中; -
Record
主要用于对象的某个字段值作为索引,去保存一个对象或者一个数组等值;
interfce Goods {
id: string,
name: string,
total: number,
}
const goodsMap: Record<string, Goods> = {};
const goodlist: Goods = []//假设里面已经有对应的数据;
// 想要通过对应的name值查找到对应的数据
goodslist.forEach(goodsItem => {
goodsMap[goodsItem.name] = goods;//那么对应的goods就是对应想要取到的值;
})
type mainInfoGood: Pick<Goods, 'id' | 'name'>
const mainGoods: mainInfoGood = {
id: '1234';
name: '每日优鲜';
}
-
Pick
主要用于提取接口的某几个属性,一个接口当中使用其中的几个属性; -
Exlude
提取的是如果T中的类型在U中不存在,则返回该字段,如果存在则抛弃;
type Exclude<T,U> = T extends U ? never : T;
-
Omit
主要作用是在一个类型当中将某个属性或者字段剔除;
interface Goods {
id: string,
name: string,
total: number,
}
type mainGoodsType = Omit<Goods, 'total'>;
const mainGoos: mainGoodsType = {
id: '1234',
name: '每日优鲜',
}
小白总结