Category

TS系列

20 篇文章

TS系列169047 阅读

19.注释指令

TypeScript 接受一些注释指令。所谓“注释指令”,指的是采用 JS 双斜杠注释的形式,向编译器发出的命令。 // @ts-nocheck告诉编译器不对当前脚本进行类型检查,可以用于 TypeScript 脚本,也可以用于 JavaScript 脚本。 上面示例中,document.getElementById(123)存在类型错误,但是编译器不对该脚本进行类型检查,所以不会报错。 如果一个…

阅读全文
TS系列377334 阅读

18. 类型工具

TypeScript 提供了一些内置的类型工具,用来方便地处理各种类型,以及生成新的类型。 这些类型工具都是语言本身提供的,可以直接使用。 Awaited<Type用来取出 Promise 的返回值类型,适合用在描述then()方法和 await 命令的参数类型。 上面示例中,Awaited<Type会返回 Promise 的返回值类型(string)。 它也可以返回多重 Promise 的返回值…

阅读全文
TS系列186533 阅读

17. 类型映射

映射(mapping)指的是,将一种类型按照映射规则,转换成另一种类型,通常用于对象类型。 举例来说,现有一个类型A和另一个类型B。 上面示例中,这两个类型的属性结构是一样的,但是属性的类型不一样。如果属性数量多的话,逐个写起来就很麻烦。 使用类型映射,就可以从类型A得到类型B。 上面示例中,类型B采用了属性名索引的写法,\[prop in keyof A]表示依次得到类型A的所有属性名,然后将每…

阅读全文
TS系列356934 阅读

16. TypeScript 类型运算符

TypeScript 提供强大的类型运算能力,可以使用各种类型运算符,对已有的类型进行计算,得到新类型。 注意区分typeof,typeof是用于查看一个变量的类型 keyof 是一个单目运算符,接受一个对象类型作为参数,返回该对象的所有键名组成的联合类型。 由于 JavaScript 对象的键名只有三种类型,所以对于任意对象的键名的联合类型就是string|number|symbol。 keyo…

阅读全文
TS系列216132 阅读

15. declare 关键字与d.ts

declare 是 TypeScript 中的关键字,用于声明变量、函数、类、模块或类型的存在,但不做具体实现。它的作用是告诉 TypeScript 编译器:“这个东西已经存在了,在别的地方定义了,你就不要再报错了”。 declare 关键字用来告诉编译器,某个类型是存在的,可以在当前文件中使用。 它的主要作用,就是让当前文件可以使用其他文件声明的类型。举例来说,自己的脚本使用外部库定义的函数,编…

阅读全文
TS系列332836 阅读

14. 装饰器

装饰器(Decorator)是一种语法结构,用来在定义时修改类(class)的行为。 在语法上,装饰器有如下几个特征。 (1)第一个字符(或者说前缀)是@,后面是一个表达式。 (2)@后面的表达式,必须是一个函数(或者执行后可以得到一个函数)。 (3)这个函数接受所修饰对象的一些相关值作为参数。 (4)这个函数要么不返回值,要么返回一个新对象取代所修饰的目标对象。 举例来说,有一个函数Inject…

阅读全文
TS系列72629 阅读

13. 命名空间namespace

namespace 用来建立一个容器,内部的所有变量和函数,都必须在这个容器里面使用。 上面示例中,命名空间Utils里面定义了一个函数isString(),它只能在Utils里面使用,如果用于外部就会报错。 如果要在命名空间以外使用内部成员,就必须为该成员加上export前缀,表示对外输出该成员。 编译后命名空间Utility变成了 JavaScript 的一个对象,凡是export的内部成员,…

阅读全文
TS系列78530 阅读

12. 模块

任何包含 import 或 export 语句的文件,就是一个模块(module)。相应地,如果文件不包含 export 语句,就是一个全局的脚本文件。 模块本身就是一个作用域,不属于全局作用域。模块内部的变量、函数、类只在内部可见,对于模块外部是不可见的。暴露给外部的接口,必须用 export 命令声明;如果其他文件要使用模块的接口,必须用 import 命令来输入。 如果一个文件不包含 exp…

阅读全文
TS系列185029 阅读

11. 类型断言

TypeScript 提供了“类型断言”这样一种手段,允许开发者在代码中“断言”某个值的类型,告诉编译器此处的值是什么类型。TypeScript 一旦发现存在类型断言,就不再对该值进行类型推断,而是直接采用断言给出的类型。 对于没有类型声明的值,TypeScript 会进行类型推断,很多时候得到的结果,未必是开发者想要的。 上面示例中,最后一行报错,原因是 TypeScript 推断变量foo的类…

阅读全文
TS系列117329 阅读

10. Enum类型(枚举)

enum(枚举)在 TypeScript 中是一个用于定义一组命名常量的工具,它可以让代码更加清晰、可读、可维护。 假设你有一组固定的值,比如一周的七天、订单状态、用户角色、性别等等。用字符串或数字硬编码是很容易出错的,比如: Enum 结构的特别之处在于,\\它既是一种类型,也是一个值。\\绝大多数 TypeScript 语法都是类型语法,编译后会全部去除,但是 Enum 结构是一个值,编译后会…

阅读全文
TS系列147729 阅读

9. 泛型

前面的是比较基础的,后面的对我来说就是进阶的了。想要玩转企业级开发,后面的东西必须认真对待了。 有些时候,函数返回值的类型与参数类型是相关的。 上面示例中,函数getFirst()总是返回参数数组的第一个成员。参数数组是什么类型,返回值就是什么类型。 这个时候只能用any来处理了 但是这样的标注,就反映不出参数与返回值之间的类型关系。就算返回一个'123'也不会报错。 为了解决这个问题,TypeS…

阅读全文
TS系列318928 阅读

8. TS Class

类(class)是面向对象编程的基本构件,封装了属性和方法,TypeScript 给予了全面支持。 类的属性可以在顶层声明,也可以在构造方法内部声明。 TypeScript 有一个配置项strictPropertyInitialization,只要打开(默认是打开的),就会检查属性是否设置了初值,如果没有就报错。 上面示例中,如果类的顶层属性不赋值,就会报错。如果不希望出现报错,可以使用非空断言…

阅读全文
TS系列72529 阅读

7. TS的interface

interface是对象的模板,可以看作是一种类型约定,中文译为“接口”。使用了某个模板的对象,就拥有了指定的类型结构。也就是说,能用来声明一个对象的结构。 和type类似,但是interface主要用于描述对象结构,不支持直接定义基本类型、联合类型。元组。而type 可以描述任何类型(包括基本类型、联合类型、元组等)。 interface能用extends,可继承多个接口,而type需要用&来组…

阅读全文
TS系列58428 阅读

6. TS对象类型标注

直接标注: 属性的类型可以用分号结尾,也可以用逗号结尾。 除了type命令可以为对象类型声明一个别名,TypeScript 还提供了interface命令,可以把对象类型提炼为一个接口。 如果某个属性是可选的(即可以忽略),需要在属性名后面加一个问号。 属性名前面加上readonly关键字,表示这个属性是只读属性,不能修改。只读属性只能在对象初始化期间赋值,此后就不能修改该属性。 如果对象的属性非…

阅读全文
TS系列66328 阅读

5. TS函数

函数的类型声明,需要在声明函数时,给出参数的类型和返回值的类型。如果没有返回值,可以标注为void 返回值的类型通常可以不写,因为 TypeScript 自己会推断出来。 如果变量被赋值为一个函数,变量的类型有两种写法。 如果函数的某个参数可以省略,则在参数名后面加问号表示。 设置了默认值的参数,就是可选的。如果不传入该参数,它就会等于默认值。 可选参数与默认值不能同时使用。 参数解构 : res…

阅读全文
TS系列58630 阅读

4. TS中的数组

根本特征:所有成员的类型必须相同,但是成员数量是不确定的,可以是无限数量的成员,也可以是零成员。 需要只读数组的时候,只需要再类型声明前加上readonly: TypeScript 将readonly number\[]与number\[]视为两种不一样的类型,后者是前者的子类型。(因为只读数组没有pop()、push()之类会改变原数组的方法) 特殊的是:如果这样写就会报错:const arr:…

阅读全文
TS系列140428 阅读

3. 类型详解

Js类型:boolean string number object undefined null bigint symbol TypeScript 继承了 JavaScript 的类型设计,以上8种类型可以看作 TypeScript 的基本类型。复杂类型由它们组合而成。 和Java不同,js类型的名称都是小写字母,首字母大写的Number、String、Boolean等在 JavaScript 语…

阅读全文
TS系列178828 阅读

2. TS类型标注

就是为各种变量、方法参数和返回值等标注其数据类型 简单类型直接冒号 + 类型: function的标注为:参数后冒号 + 类型,返回值在括号后加冒号和类型: any 类型表示没有任何限制,该类型的变量可以赋予任意类型的值。相当于js原本的变量,可以赋任意数据类型的值。即TypeScript 不对其进行类型检查。应该尽量避免使用any类型,否则就失去了使用 TypeScript 的意义。 在类型推断…

阅读全文
TS系列100529 阅读

1. 了解Typescript

背景:前端工作已经有好几年了,ts也接触了不少,但一直是知其然不知其所以然。虽然知道它对于前端来说很重要,也有想过去了解,但是始终没有静下心系统的进行学习。最近环境不太好,所以计划利用这个周末的时间来系统性学习、查缺补漏。目标是完全弄懂概念以及在实战中的应用。 一开始打算使用视频来学习,但是感觉太慢了。说的比较基础,也难以找到合适我的视频。所以使用阮一峰老师的ts博客进行学习。本系列文章主要用于记…

阅读全文