TypeScript基础一

一、TypeScript简介

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

一、TypeScript出现原因

1. js存在以下问题:js不会报错,不利于项目维护

  • 不清不楚的数据类型
  • 有漏洞的逻辑
  • 访问不存在的属性
  • 低级拼写错误

2.ts支持静态类型检查

在代码运行前进行检查,发现代码的错误或不合理之处,减小运行时异常的出现的几率

3.TypeScript的代码结构更加清晰,便于维护

三、TS编译

从html文件引入编译后的js文件

  1. 全局安装ts
js 复制代码
npm install -g typescript
  1. 初始化
js 复制代码
tsc init  

3.tsc --watch 监听ts文件

js 复制代码
  tsc --watch xx.ts

四、TS数据类型

1. js数据类型

  • 基本类型 :string、number、boolean、null、undefined、symbol;
  • 引用/对象类型:String、Number、Boolean、Array、Function、Date、Error、Math、RegExp、Global、Object

2. TS新增类型

2.1 any:任意类型。

any类型可以赋值给任意类型变量,对定义类型变量产生破坏

2.2 unknown:未知类型

(1) 可以理解为类型安全的any,适用于:不确定数据的具体类型

(2)解决unknown报错方法(typeOf、断言)

2.3 never:任何值都不是,不能有任何值,几乎用不到

(1) 几乎不用never去直接定义变量,没有意义

(2) never一般是TS主动推断出的

(3) never可用于限制函数的类型(函数永远也执行不完或者直接抛出异常的情况返回nerver)

2.4 void:通常用于函数返回值声明【函数不返回任何值/返回值为空,调用者也不应依赖其返回值做任何操作】

注意:不能接受void定义的函数返回值做操作,即使函数隐式返回undefined

2.5 object(object和Object):实际应用很少,范围太宽

(1) object (2) Object(除了null和undefined 都可以存)

(3) 声明对象类型

1)字面量类型声明(" ?"为可选属性) 2)索引签名:允许定义对象可以具有任意数据量的属性,这些属性的键和类型是可变的,常用于描述类型不确定的属性,(具有动态属性的对象)

(4) 声明函数类型

go 复制代码
```js
注意:
1.TS 中的=>在函数类型声明时表示函数类型,描述其参数类型和返回类型
2.JS 中的=>是一种定义函数的语法,是具体函数的实现
3.函数类型声明还可以使用接口,自定义类型等方式
```

(4) 声明数组类型

2.6 tuple元组

元组是一种特殊的数组类型,可以存固定数量的元素,并且每个元素的类型是已知的且可以不同。元组用于精确描述一组数值的类型,?表示可选元素

2.7 enum枚举(重点)

作用:增加代码可读性,便于后期维护

(1) 数字枚举

数字枚举一种最常见的枚举类型,其成员的值自动递增且数字枚举还具备反向映射的特点,在下面 代码的打印中,不难发现:可以通过值来获取对应的枚举成员名称。

不给初始值,默认值从0开始自动递增,否则从当前值递增 (2) 字符串枚举

会丢失反向映射特点 (3) 常量枚举 会减少编译后生成的js代码量,提高运行时的性能

  • 使用常量枚举,编译后js文件只生成我们需要的js代码
  • 不使用常量枚举,编译后会生成一些额外的js代码

3.两个自定义类型方式

3.1 type(重点)

type可以为任意类型创建别名,让代码更简洁,可读性更强,同时能更方便的进行类型复用和扩展

(1) 基础用法

(2) 联合类型(或类型 " | ")

联合类型是一种高级类型,值可以是类型中的一种

(3)交叉类型(且类型 " & ")

允许多个类型合并为一个类型,合并后会拥有类型所有成员,常用于对象类型 (4)特殊情况

在函数定义时,限制函数返回值为void,那么函数得返回值必须是空

使用类型声明限制函数返回值为void时,ts并不会严格要求函数返回空

原因:是为了确保如下代码成立,我们知道Array,prototype.push的返回一个数字,而Array.prototy pe,forEach方法期望其回调的返回类型是void

3.2 interface(重点)

相关推荐
小兔崽子去哪了12 分钟前
微信小程序入门
前端·vue.js·微信小程序
独立开阀者_FwtCoder15 分钟前
# 白嫖千刀亲测可行——200刀拿下 Cursor、V0、Bolt和Perplexity 等等 1 年会员
前端·javascript·面试
不和乔治玩的佩奇22 分钟前
【 React 】useState (温故知新)
前端
那小孩儿22 分钟前
?? 、 || 、&&=、||=、??=这些运算符你用对了吗?
前端·javascript
七月十二25 分钟前
[微信小程序]对接sse接口
前端·微信小程序
小七_雪球27 分钟前
Permission denied"如何解决?详解GitHub SSH密钥认证流程
前端·github
野原猫之助28 分钟前
tailwind css在antd组件中使用不生效
前端
没资格抱怨35 分钟前
如何在vue3项目中使用 AbortController取消axios请求
前端·javascript·vue.js
掘金酱39 分钟前
😊 酱酱宝的推荐:做任务赢积分“拿”华为MatePad Air、雷蛇机械键盘、 热门APP会员卡...
前端·后端·trae
热爱编程的小曾1 小时前
sqli-labs靶场 less 11
前端·css·less