禹神:三小时快速上手TypeScript,TS速通教程(上篇、中篇、下篇,装饰器),根据视频整理

一、TS简介

  1. TypeScript 由微软开发,是基于 JavaScript 的一个扩展语言
  2. TypeScript 包含了 JavaScript 的所有内容,即:Typescript 是 Javascript 的超集
  3. TypeScript 增加了:静态类型检查、接口、泛型等很多现代开发特性,因此更适合大型项目的开发。
  4. TypeScript 需要编译为 JavaScript,然后交给浏览器或其他 JavaScript 运行环境执行。

二、为什么需要TS

1、今非昔比的 JavaScript(了解)

JavaScript 当年诞生时的定位是浏览器脚本语言而且代码量很少。用于在网页中嵌入一些简单的逻辑随着时间的推移,JavaScript 变得越来越流行,如今的 JavaScript 已经可以全栈编程了。
现如今的 JavaScript 应用场景比当年丰富的多代码量也比当年大很多,随便一个JavaScript 项目的代码量,可以轻松的达到几万行,甚至十几万行!然而 JavaScript 当年“出生简陋”,没考虑到如今的应用场景和代码量,逐渐的就出现了很多困扰

2、JavaScript 中的困扰

  1. 不清不楚的数据类型
    在这里插入图片描述
  2. 有漏洞的逻辑
    在这里插入图片描述
  3. 访问不存在的属性
    在这里插入图片描述
  4. 低级的拼写错误
    在这里插入图片描述

3、在TS中不用运行就有提示

  1. 不清不楚的数据类型
    在这里插入图片描述

  2. 有漏洞的逻辑
    在这里插入图片描述

  3. 访问不存在的属性
    在这里插入图片描述

  4. 低级的拼写错误
    在这里插入图片描述

4、静态类型检查

在代码运行前进行检查,发现代码的错误或不合理之处,减小运行时异常的出现的几率,此种检查叫『静态类型检查』,TypeScript 和核心就是『静态类型检查』,简言之就是把运行时的错误前置
同样的功能,TypeScript 的代码量要大于JavaScript,但由于 TypeScript 的代码结构更加清晰,在后期代码的维护中 TypeScript 却远胜于JavaScript。

三、TS编译

浏览器不能直接运行 TypeScript 代码,需要编译为 JavaScript 再交由浏览器解析器执行。

  1. 命令行编译
    在这里插入图片描述
  2. 自动化编译
    在这里插入图片描述
  3. tsconfig.json配置文件
    在这里插入图片描述
    在这里插入图片描述

四、类型声明

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五、类型推断

在这里插入图片描述

六、类型总览

1、JS中数据类型

在这里插入图片描述

2、TS中数据类型

在这里插入图片描述

3、注意点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、常用类型与语法

1、any

在这里插入图片描述

2、unknown

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、never

在这里插入图片描述

4、void

在这里插入图片描述
在这里插入图片描述
3. 区别
在这里插入图片描述
在这里插入图片描述

5、object

在这里插入图片描述
在这里插入图片描述

①声明对象类型

在这里插入图片描述

②声明函数类型

在这里插入图片描述

③声明数组类型

在这里插入图片描述

6、tuple(元组)

在这里插入图片描述

7、enum(枚举)

在这里插入图片描述

①数字枚举

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②字符串枚举

在这里插入图片描述

③常量枚举

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8、type (自定义类型)

①基本用法

在这里插入图片描述

②联合类型

在这里插入图片描述

③交叉类型

在这里插入图片描述
在这里插入图片描述

9、一种特殊情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10、复习类相关知识

在这里插入图片描述
在这里插入图片描述

11、属性修饰符

在这里插入图片描述

①public修饰符

在这里插入图片描述

②属性的简写形式

在这里插入图片描述

③protected修饰符

在这里插入图片描述
在这里插入图片描述

④private修饰符

在这里插入图片描述
在这里插入图片描述

⑤readonly修饰符

在这里插入图片描述

12、抽象类

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13、interface(接口)

在这里插入图片描述

①定义类结构

在这里插入图片描述

②定义对象结构

在这里插入图片描述

③定义函数结构

在这里插入图片描述

④接口之间的继承

在这里插入图片描述

⑤接口自动合并(可重复定义)

在这里插入图片描述

14、一些相似概念的区别

①interface和type的区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

②interface和抽象类的区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、泛型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九、类型声明文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

拓展:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十、TS装饰器

1、简介

在这里插入图片描述

2、类装饰器

①. 基本语法

类装饰器是一个应用在类声明上的函数,可以为类添加额外的功能,或添加额外的逻辑。

在这里插入图片描述
在这里插入图片描述

②. 应用举例

需求:定义一个装饰器,实现 Person 实例调用 tostring 时返回 JS0N.stringify 的执行结果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③. 关于返回值

在这里插入图片描述

④. 关于构造类型

在 TypeScript 中, Function 类型所表示的范围十分广泛,包括:普通函数、箭头函数、方法等等。但并非 Function 类型的函数都可以被 new 关键字实例化,例如箭头函数是不能被实例化的,那么TypeScript 中概如何声明一个构造类型呢?有以下两种方式:

  • 仅声明构造类型
    在这里插入图片描述
  • 声明构造类型+指定静态属性
    在这里插入图片描述

⑤. 替换被装饰的类

对于高级一些的装饰器,不仅仅是覆盖一个原型上的方法,还要有更多功能,例如添加新的方法和状态。需求:设计一个 LogTime 装饰器,可以给实例添加一个属性,用于记录实例对象的创建时间,再添加一个方法用于读取创建时间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、装饰器工厂

装饰器工厂是一个返回装饰器函数的函数,可以为装饰器添加参数,可以更灵活地控制装饰器的行为。

需求:定义一个 LogInfo 类装饰器工厂,实现 Person 实例可以调用到 introduce 方法,且 introduce中输出内容的次数,由 LogInfo 接收的参数决定。

在这里插入图片描述

4、装饰器组合

装饰器可以组合使用,执行顺序为:先【由上到下】的执行所有的装饰器工厂,依次获取到装饰器,然后再【由下到上】执行所有的装饰器
在这里插入图片描述
在这里插入图片描述

5、属性装饰器

①基本语法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②关于属性遮蔽

在这里插入图片描述

如下代码中:当构造器中的 this.age = age 试图在实例上赋值时,实际上是调用了原型上 age 属性的 set 方法。

在这里插入图片描述

③应用举例

需求:定义一个 state 属性装饰器,来监视属性的修改。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6、方法装饰器

①基本语法

在这里插入图片描述

②应用举例

需求:
1.定义一个 Logger 方法装饰器,用于在方法执行前和执行后,均追加一些额外逻辑。
2.定义一个 Validate 方法装饰器,用于验证数据。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、访问器装饰器

①基本语法

在这里插入图片描述

②应用距离

需求:对 weather 类的 temp 属性的 set 访问器进行限制,设置的最低温度-58 ,最高温度 58

在这里插入图片描述

在这里插入图片描述

8、参数装饰器

基本语法

在这里插入图片描述

### 关于Vue3笔记的内容概述 笔记为学习者提供了关于TypeScript的一份快速上手指南,帮助开发者更好地理解并应用TypeScript的相关概念[^1]。这份笔记不仅适合初学者入门,还能够作为长期参考资料使用。 对于Vue3而言,其设计支持向下兼容Vue2的语法结构,同时引入了许多新的特性和改进。例如,在Vue3中模板部分不再强制要求根标签的存在[^2]。这意味着开发人员可以根据实际需求自由构建更灵活的HTML结构。 #### Vue3的核心变化与功能增强 在Vue3的新特性方面,主要体现在以下几个重要领域: - **Options API 和 Composition API** Options API 是传统方式定义组件逻辑的方法;而Composition API 则提供了一种更加模块化的方式来组织代码,尤其适用于复杂业务场景下的状态管理[^2]。 - **组件间信机制的变化** Vue3 对比Vue2进行了多项调整来改善组件间的交互体验。具体来说: - 原有的事件总线已被移除,推荐采用第方库`mitt`实现类似的跨组件讯能力。 - 数据存储解决方案由Vuex升级至Pinia,后者具备更强的功能扩展性以及更好的 TypeScript 支持。 - `.sync`修饰符被整合进了 `v-model` 中统一处理。 - `$listeners` 的内容现在全部归入 `$attrs` 下面进行管理。 - 不再保留对子组件直接访问的支持(即取消了 `$children` 属性)。这些改动旨在简化框架内部运作流程的同时提升性能表现[^3]。 #### 注册全局资源实例演示 以下是过Vue3注册全局组件的一个简单例子: ```javascript // 定义一个名为 MyButton 的全局按钮组件 app.component('MyButton', { data: () => ({ count: 0, }), template: '<button @click="count++">Clicked {{ count }} times.</button>', }); // 同样也可以创建自定义指令用于自动聚焦输入框等功能 app.directive('focus', { mounted(el) { el.focus(); }, }); ``` 以上展示了如何利用Vue3新增加或者改良后的API完成一些基础操作[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值