TypeScript-04-常见用法

简介: 之前的文章ts-03基础语法介绍了一些简单的语法,对TS有了初步的认识接下里讲些常见的用法

1. 前言


之前的文章ts-03基础语法

介绍了一些简单的语法,对TS有了初步的认识

接下里讲些常见的用法


2. 函数重载


还是书接上文的函数内容

2.1  函数重载的概念

利用形参的类型或数量的不同 来区分多个函数

一个函数有多种使用方法

2.2 基础代码


function play(cb1: () => void): void
// 重载2 
function play(cb1: () => void, cb2: (v1: any, v2: any) => void): void
// 实现
function play(cb1: () => void, cb2?: (v1: any, v2: any) => void) {
    if (cb2) {
        console.log("执行重载2")
    } else {
        cb1()
        console.log("执行重载1")
    }
}


2.3 使用


play(() => { })
play(() => { }, (v1, v2) => { })

图示

3EUKIQ2){]21$6~~QEX{(}S.png


这就是平常写代码的提示 ,提示多个的原因,就是利用了重载


3.类型别名


3.1 引子


var obj: object = { name: "yzs" }

对这个对象类型进行赋值的时候 ,写注解也没用

因为并不能约束对象里面的结构

3.2 对象约束


var objType: { name: string, age: number}

3.3 使用


objType = { name: "yzs", age: 30 }


3.4 代码提示

FFS6XV7ZW(6M8{IYM6MI_JQ.png


4. type 类型别名


类似接口

上面的 对象约束 ,其实不方便复用

4.1 基本用法


type Person = { name: string, age: number

关键字 type是重点

4.2 使用


var objType2: Person
objType2 = { name: "祺祺", age: 3 }


4.3  数据列表


var persons: Person[] = [{ name: "yzs", age: 30 }, { name: "祺祺", age: 3 }]

这个就是我们平常 接收服务器返回的 List的数据结构形式


5. 联合类型


顾名思义 ,多个类型结合起来使用

5.1 联合类型语法


type First = { first: number }
type Second = { second: string }
type FirstAndSecond = First & Second


5.2 联合类型场景

服务器返回的数据是不带状态的

而我们的实际情况是会有选中态等类似的状态的


// 类型别名
type Person= {
  id: number;
  name: string;
};
type PersonVip= Person& { selected: boolean };


5.3 使用

模拟服务器返回的数据


persons: Person[] = [{id:1,name:"沈腾"},{id:2,name:"马丽"}]


模拟遍历后处理的数据


persons: PersonVip[] = [{id:1,name:"沈腾",vip:true},{id:2,name:"马丽",vip:false}]

再结合界面的 class或者选中框 等来处理


6. class的不同


6.1 核心代码


class Parent {
    private _money = "98765432"; // 私有属性,不能在类的外部访问
    protected age = 30// 保护属性,可以在子类中访问
    //参数属性: 构造函数 参数 加修饰符 能够定义为成员属性
    constructor(public nationality = "China") { }
    //方法也修饰符
    private sayHello() { }
    // 存取器: 属性方式访问 .可添加额外逻辑  控制读写
    get money() {
        return this._money
    }
    set(val:string) {
        this._money = val
    }
}


6.2 变量

写过强类型语言的应该非常熟悉这块

private    私有变量只能父类自己访问

protected   受保护的属性 子类也能访问

public  共有类,这里去修饰构造函数的形参的写法比较省事,

当然也可以采用和 私有变量 受保护变量的写法

6.3 方法

方法也可以加修饰符 和 变量一样

6.4 存取器

主要就是 set  get方法

如果使用Vue框架 里面的computed计算属性就可以通过这个存取器来实现

下篇文章详细讲解在Vu3里面的ts用法


7. 子类


7.1 基础代码


class Child extends Parent{
    constructor() {
        super()
        this.age = 30
    }
}


7.2 提示

R8BW~K[2{E)HP7V$4TR%GCR.png



7.3 简要分析

父类的私有方法访问不到所以不会提示

money能访问到是因为接住了父类的存储器


8. 接口


8.1 基本写法


interface Book{
    name:string,
    price:string
}


8.2 分析

是不是觉得和type 类型别名很像

确实很像区别在于

接口 是  只定义结构,不定义实现

type比较简洁,也更灵活

8.3 用法


function shop(book:Book){
    return `书名:${book.name}+价格:${book.price}`
}
shop({name:"价值",price:'99.99'}) //正确
// shop({name:"被讨厌的勇气"}) //报错



9. 泛型


泛型是很广泛的

接口.类,函数,都可以是泛型的

一般 用 从T 开始的大写字母表示


interface Result<T>{
    ok: 0 | 1;
    // data: Person
    data:T
}




相关文章
|
7月前
|
JavaScript
详细介绍 TypeScript 中常用的循环语句,包括它们的语法、用法以及一些注意事项
详细介绍 TypeScript 中常用的循环语句,包括它们的语法、用法以及一些注意事项
195 1
|
7月前
|
存储 JavaScript 前端开发
TypeScript 中的 Map 对象定义、基本操作和常见用法
TypeScript 中的 Map 对象定义、基本操作和常见用法
647 7
|
7月前
|
JavaScript 前端开发 安全
详细介绍 TypeScript 函数的各种特性、用法和最佳实践
详细介绍 TypeScript 函数的各种特性、用法和最佳实践
87 3
|
7月前
|
JavaScript
小结:近五十个常用 TypeScript类型工具 的声明、描述、用法示例
小结:近五十个常用 TypeScript类型工具 的声明、描述、用法示例
197 0
|
JavaScript
TypeScript 小结:近五十个常用TypeScript类型工具的声明、描述、用法示例
近五十个常用TypeScript类型工具的声明、描述、用法示例
119 0
|
JavaScript
学习TypeScript26(TS进阶用法infer )
定义一个类型 如果是数组类型 就返回 数组元素的类型 否则 就传入什么类型 就返回什么类型
123 0
|
JavaScript 前端开发 索引
学习TypeScript25(TS进阶用法Record & Readonly)
in 我们可以理解成for in P 就是key 遍历 keyof T 就是联合类型的每一项
219 0
|
JavaScript 前端开发 索引
学习TypeScript24(TS进阶用法Partial & Pick )
keyof我们讲过很多遍了 将一个接口对象的全部属性取出来变成联合类型
153 0
学习TypeScript23(TS进阶用法proxy & Reflect)
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)
418 0
|
编译器
Vue3-TypeScript-事件-计算属性用法
1.书接上文vue3-ts核心语法 2.这个主要是 事件写法 和 计算属性的用法
815 0
Vue3-TypeScript-事件-计算属性用法