当前位置: 首页 > news >正文

10 分钟速通 TypeScript 核心

10 分钟速通 TypeScript 核心

  • 1. 简介
  • 2. 使用方式
  • 3. 核心内容
    • 3.1 类型推断(不建议,变量类型不明确)
    • 3.2 类型注解(推荐,明确变量类型)
    • 3.3 类型断言(给不确定类型变量定义类型,慎用)
    • 3.4 基础类型(string、number、boolean、null、undefined)
    • 3.4 联合类型(定义多种可能类型)
    • 3.5 数组类型(变量类型[] 或 Array<变量类型>)
    • 3.6 元祖类型
    • 3.7 枚举类型
    • 3.8 函数相关
    • 3.9 接口(定义对象字段类型)
    • 3.10 类型别名
    • 3.11 泛型

1. 简介

TypeScript(简称 TS) 就是 JavaScript 的超集。官网地址:https://ts.nodejs.cn/docs/handbook/intro.html

存在意义:解决了 JavaScript 不能对代码中所有的标识符(变量、函数、参数、返回值)进行类型检查的问题。

编译器:tsc 是 TS 的编译器。类型检查发生的时间,在编译的时候,而非运行时。

本篇文章适合 TypeScript 零基础的同学观看,用于快速了解其核心概知识和使用方式。如果想深入了解,建议前往官网进行学习。当然,后续我们也会针对 TypeScript 的知识进行深入学习和解析。

2. 使用方式

(1)在项目中使用,直接下载:

npm install typescript --save-dev

(2)学习使用,直接前往官网的演练场(Playground)进行使用。

可以对 TypeScript 的版本、配置进行修改。写入代码,右侧可以看到对应的 JS代码 和 错误提示,点击运行,右侧可以看到相应的日志。

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

3. 核心内容

3.1 类型推断(不建议,变量类型不明确)

类型推断:根据初始值自动推断其类型。

let str = 'abc'
str = 123

这段代码中,let str = 'abc' 定义了 str 的初始值 ‘123’,TS 就会自动推断其类型为 string 类型,如果后续修改成其他类型,编译时就会报错。
在这里插入图片描述

3.2 类型注解(推荐,明确变量类型)

类型注解:在变量名右侧添加 : 变量类型 的方式定义其类型。初始值给定与否,看业务需要。

(1)给定初始值

let str: string = 'abc'
str = '123'

(2)不给定初始值

let str: string
str = '123'

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

3.3 类型断言(给不确定类型变量定义类型,慎用)

类型断言:在非明确初始值(通过计算或者函数判断得出)的右侧添加 as 变量类型 的方式进行类型定义。

(1)正确写法

let numArr = [1, 2, 3]
const result = numArr.find(item => item > 2) as number
console.log(result * 5)

在这里插入图片描述
(2)错误示例

let numArr = [1, 2, 3]
const result = numArr.find(item => item > 2)
console.log(result * 5)

在这里插入图片描述
result 的值,是通过函数计算方式得出,而非直接定义,因此 TS 判定其值可能为 undefined,所以 console.log(result * 5) 会报错。

3.4 基础类型(string、number、boolean、null、undefined)

let str: string = 'abc'
let num: number = 123
let flag: boolean = true
let nu: null = null
let un: undefined = undefined

3.4 联合类型(定义多种可能类型)

联合类型:通过 | 将多个多种可能的类型(甚至是具体的值)情况进行列举。

let v1: string | null = null
let v2: 1 | 2 | 3 = 3
function fun(x: number | string, y: number | string) {console.log(x, y)
}

3.5 数组类型(变量类型[] 或 Array<变量类型>)

在 JavaScript 中,数组的每个值可以为任意类型,实际开发中不建议这么做。TypeScript 中可以对数组类型进行限定。类型数组有两种写法:
(1): 变量类型[]

let numArr: number[] = [1, 2, 3]

(2)Array<变量类型>

let strArr: Array<string> = ['a', 'b', 'c']

3.6 元祖类型

元祖类型(可以存储限定个数的多个数据)

let t1: [number, string, boolean] = [1, 'a', true]

在这里插入图片描述

3.7 枚举类型

enum MyEnum {A,B,C
}console.log(MyEnum.A === 0)
console.log(MyEnum[0] === 'A')

3.8 函数相关

(1)void 类型

void 表示 空 的意思,和 null、undefined 类似。通常用于给不返回任何值的函数进行类型定义。

function fn(x: number, y: number): void {console.log(x, y)
}

(2)设置参数可选。

可以使用 ?: 参数类型 或者 ...参数名: 参数类型[] 的方式定义单个或多个可选变量。

function MyFn(a = 10, b: string, c?: boolean, ...rest: number[]): number {console.log('a', a)console.log('b', b)console.log('c', c)console.log('rest', rest)return 100
}const f1 = MyFn(10, 'abc', false, 1, 2, 3, 4)const f2 = MyFn(20, 'abc')const f3 = MyFn(20)

在这里插入图片描述

在这里插入图片描述
注意,我们通常选择将必填参数放在前面,可选参数放在后面

3.9 接口(定义对象字段类型)

接口通常使用 interface 对对象进行定义。比如:

interface Person {name: string,age: number
}const p1: Person = {name: 'Jack',age: 12
}const p2: Person = {name: 'Mike',age: 14
}

在这里插入图片描述
可能的报错:
(1)内部属性和接口不一致;
(2)接口定义属性,对象没有定义;
(3)接口未定义属性,对象进行了定义

3.10 类型别名

类型别名: 通过 type 可以对任何类型进行命名。比如联名类型、对象等。

(1)给联名类型起别名

type MyUserId = string | number
let v: MyUserId = '123'// 上面两行等价于 let v: string | number = '123'

(2)给对象起别名

type Point = {x: number;y: number;
};function printCoord(pt: Point) {console.log("The coordinate's x value is " + pt.x);console.log("The coordinate's y value is " + pt.y);
}printCoord({ x: 100, y: 100 });

3.11 泛型

泛型:如果类型多变,但是功能一致,我们可以使用任意变量,比如 T 放在函数名后,用于表示相同类型。比如

// 变量a, b是相同类型,并且返回一个相同类型的数组
function MyFn<T>(a: T, b: T): T[] {return [a, b]
}console.log(MyFn<number>(1, 2))
console.log(MyFn<string>('a', 'b'))// 会自动进行类型推断,
console.log(MyFn(3, 4))
console.log(MyFn(3, 'a'))

在这里插入图片描述

http://www.dtcms.com/a/591347.html

相关文章:

  • 网站美工设计什么是平衡网站导航栏一般有什么内容
  • Kodiak 推出 Berachain 原生永续合约平台——Kodiak Perps,完善流动性生态版图
  • 怎样用ps做网站首页图片WordPress 微盘
  • 甘肃肃第八建设集团网站1注册城乡规划师报考条件
  • 宁波网站推广平台咨询公司网站推广制作教程
  • 陕西省建设执业资格注册中心网站淘宝网站开发框架
  • 深圳企业建站模板网络营销的特点和功能
  • 门户网站的传播特点企业所得税费用怎么算
  • 建设信用卡积分兑换网站湖南好搜公司seo
  • 网站建设的制度南海区建设局网站
  • 昆明网站建设手机版seo会被取代吗
  • 湖北微网站建设电话招聘网站开发技术维护
  • 做网站原则网站制作 太原
  • 株洲企业网站建设费用wordpress微信群导航主题
  • 概念产品设计网站企业服务中心组建方案
  • 代写网站懂做网站怎么赚钱
  • 网站建设谢词软件技术好就业吗
  • 卡车行业做网站的用途互联网营销怎么赚钱
  • 天津外贸公司网站制作怀化网站设计
  • React Native第六章
  • 专业的建设网站服务公司网页翻译app
  • 做家具商城网站被骗去国外做网站网站推广
  • 长春网上建设网站网站建立具体步骤是
  • 家居网站建设全网营销个人身份调查网站
  • 铁门关市建设局网站个人备案网站 内容
  • 济南优化推广网站seowordpress关闭头像
  • wordpress整站主题做中英文游戏门户网站关键词怎么弄
  • 做网站页面多少钱刷单的网站怎么建设
  • 网站容量空间一般要多大四川网站建设外包服务
  • 淘宝客如何免费做网站做一组静态页面网站多少钱