赞
踩
本文主要深入学习TS的语法,了解type和interface的相同和不同点,对interface的特性进行解析,对联合类型和交叉类型进行学习还有类型断言和非空断言等知识进行解析学习
type arrType = string[]
type objType = {
name: string
age: number
}
const arr: arrType = ['wuu']
const obj: objType = {
name: 'wuu',
age: 20
}
export{}
// 接口只可以定义对象
interface IObj {
name: string
age: number
height: number
}
const obj1: IObj ={
name: 'wuu',
age: 20,
height: 176
}
interface IPerson { name: string age: number } // IKun这个接口继承Person // IKum,必须有IPerson的属性 interface IKun extends IPerson { slogan: string } const obj: IKun = { name: 'wuu', age: 20, slogan: '哎哟,你干嘛' }
interface IPerson {
name: string
age: number
}
// 类实现了接口IPerson
// 类必须有接口对应的属性和方法
class Person implements IPerson {
constructor(public name: string, public age: number){
}
}
◼ TypeScript的类型系统允许我们使用多种运算符,从现有类型中构建新类型
◼ 我们来使用第一种组合类型的方法:联合类型(Union Type)
联合类型是由两个或者多个其他类型组成的类型;
表示可以是这些类型中的任何一个值;
联合类型中的每一个类型被称之为联合成员(union’s members);
// 联合类型
// 表示类型可以是number或者string其中一个
type jointType = number | string
const message: jointType = 123
const message2: jointType = "123"
// 交叉类型
interface IPerson {
name: string
}
interface IKun {
age: number
}
// 表示obj同时满足IPerson和IKun
const obj: IPerson & IKun = {
name: 'wuu',
age: 20
}
// 类型断言
// 不使用as时的类型是never[],表示数组为空
// const infoList = []
//把never[]转化为 string[]
const infoList = [] as string[]
◼ 确定传入的参数是有值的,这个时候我们可以使用非空类型断言:
非空断言使用的是 ! ,表示可以确定某个标识符是有值的,跳过ts在编译阶段对它的检测;
◼ 字面量类型有什么意义呢?
默认情况下这么做是没有太大的意义的,但是我们可以将多个类型联合在一起;
type Alignment = 'left' | 'right'
function changeAlign(align: Alignment){
console.log('传递多个方向');
if(align === 'left'){
console.log('向左');
}
}
◼ 什么是类型缩小呢?
类型缩小的英文是 Type Narrowing(也有人翻译成类型收窄);
我们可以通过类似于 typeof padding === “number” 的判断语句,来改变TypeScript的执行路径;
在给定的执行路径中,我们可以缩小比声明时更小的类型,这个过程称之为 缩小( Narrowing );
而我们编写的 typeof padding === "number 可以称之为 类型保护(type guards);
◼ 常见的类型保护有如下几种:
typeof
let info: unknown = "123"
info = 123
if(typeof info === 'string'){
// 类型缩小后就可以操作
console.log(info.length)
}
平等缩小(比如===、!==)
type Alignment = 'left' | 'right'
function changeAlign(align: Alignment){
console.log('传递多个方向');
if(align === 'left'){
console.log('向左');
}
}
instanceof
in
等等…
本文主要深入学习TS的语法
由于作者水平有限
如果对本文有任何疑问可以私信或者评论区发表你的看法
本文如果对你有帮助,麻烦点个赞和收藏方便回看,点点关注 谢谢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。