
TypeScript
文章平均质量分 55
秀秀_heo
一个学习前端开发的大学生,博客为自己的学习笔记,仅供个人学习使用。
展开
-
【TypeScript】模块化和命名空间、类型查找、类型缩小
TypeScript有它自己的模块格式,名为namespaces,它在 ES 模块标准之前出现。命名空间在TypeScript早期时称之为内部模块,目的是将一个模块内部再进行作用域的划分,防止一些命名冲突的问题。虽然命名空间没有被废弃,但是由于ES模块已经拥有了命名空间的大部分特性,因此更推荐使用ES模块,这样才能与JavaScript的(发展)方向保持一致。一些外部库拥有自己的类型声明文件,如 axios 内置在自己的包里。同时也有一些没有自己类型声明文件的,可以尝试安装。原创 2025-01-22 22:19:46 · 645 阅读 · 0 评论 -
【TypeScript】入门
TypeScript是]avaScript的类型的超集,支持ES6语法,支持面向对象编程的概念,如 类、接口、继承、泛型等。它提供了类型注解,在代码编译阶段就可以检查出数据类型的错误。ts 可处理已有的 js 代码,并只对其中的 ts 代码进行编译,编译为 js 文件。原创 2024-07-19 17:04:41 · 180 阅读 · 0 评论 -
【TypeScript】类型兼容(协变、逆变和双向协变)
类型兼容,就是用于确定一个类型是否能赋值给其他的类型。如果A要兼容B 那么A至少具有B相同的属性。类型兼容的主旨就是为了保证类型安全。简单来说就是为了保证类型安全。原创 2024-06-15 21:57:14 · 589 阅读 · 0 评论 -
【TypeScript】类型守卫
实现一个函数,该函数可以传入任何类型。但是如果是object就检查里面的属性,如果里面的属性是number就取两位小数;如果是string就去除左右空格;如果是函数就执行。// 同理以下写法let value// 遍历不能使用 for in 因为 for in 会遍历原型链上的属性// value();})a: 1.1234,console.log(this, '函数执行')fn(obj)原创 2024-06-15 21:56:42 · 447 阅读 · 0 评论 -
【TypeScript】泛型工具
对于使用extends关键字的条件类型(即上面的三元表达式类型),如果extends前面的参数是一个泛型类型,当传入该参数的是联合类型,则使用分配律计算最终的结果。分配律是指,将联合类型的联合项拆成单项,分别代入条件类型,然后将每个单项代入得到的结果再联合起来,得到最终的判断结果。在A3的定义中,给T传入的是’x’和’y’的联合类型。总之,满足两个要点即可适用分配律:第一,参数是泛型类型,第二,代入参数的是联合类型。,满足分配律,于是’x’和’y’被拆开,分别代入。获取函数的返回值的类型。原创 2024-06-15 13:23:46 · 1215 阅读 · 3 评论 -
【Webpack】使用 Webpack 构建 Vue3+TS 项目
shim.d.ts 文件是一个类型声明文件,用于告诉 TypeScript 编译器如何处理 Vue 的单文件组件(SFC)和其他自定义模块。为 Vue 的单文件组件和其他非 TypeScript 模块提供类型信息,以便在 TypeScript 项目中使用它们时能够正确地进行类型检查和代码提示。webpack5 以上的版本需要安装 webpack-cli。webpack-dev-server 开启一个本地服务。原创 2024-06-14 20:16:09 · 962 阅读 · 0 评论 -
【TypeScript】非空断言操作符 `!.`
这个操作符在处理可能为 null 或 undefined 的情况时非常有用,但需要小心使用,因为它绕过了 TypeScript 的类型检查。如果你不能确定,最好使用安全的方式来处理可能为空的值,例如使用条件语句或空值检查。是 TypeScript 中的非空断言操作符,用于告诉编译器某个表达式的值一定不会为。是一个非常有用的非空断言操作符,用于告诉编译器一个表达式的值一定不会为。断言告诉 TypeScript,这个值不会为空,因此可以安全地调用。,因为它绕过了 TypeScript 的类型检查。原创 2023-09-21 15:34:24 · 541 阅读 · 0 评论 -
【TypeScript】enum
它允许你将一组相关的常量值封装在一个容器内,以提高代码的可读性和可维护性。下面是如何使用 TypeScript 中的。常量枚举在编译后不会生成真正的 JavaScript 枚举,而是将枚举值直接嵌入到生成的 JavaScript 代码中,以减小输出文件的大小。TypeScript 自动生成了枚举值到名称的反向映射。如果在编译时知道枚举值永远不会被改变,你可以将枚举标记为。枚举包含了一组常量值,这些值默认从0开始递增,因此。枚举中的值被显式赋予了数字,而不是默认的递增值。的值是1,依此类推。原创 2023-09-06 10:47:51 · 121 阅读 · 0 评论 -
【TypeScript】键的类型写法
是你希望用作对象键的名称。这种语法表示对象可以包含任何字符串作为键,而不限定特定的键名。这种语法通常用于对象中包含一组特定名称的属性,而不是任意字符串作为键。是你希望对象具有的特定键名之一。这种语法表示对象应该具有一个名为。的属性,该属性的键类型应该是字符串,而值类型是。的属性,并且该属性的键类型应该是字符串。的写法是会报错的,尽管也能正常输出。使用了特定键名语法。对象应该具有一个名为。原创 2023-09-03 17:18:12 · 333 阅读 · 0 评论 -
【TypeScript】装饰器 Decorator
在ES6中,就已经出现的装饰器。装饰器(Decorator)是一种与类(class)相关的语法,用来注释或修改类和类方法。装饰器其实就是一个编译时执行的函数。装饰器(Decorators)是 TypeScript 中一种特殊的语法,用于在类、方法、属性等元素上附加元数据或修改其行为。装饰器提供了一种在不改变类的定义的情况下,对类进行扩展或修改的方式。装饰器的使用类似于注解,在代码中以符号开头,后面紧跟装饰器工厂函数或表达式。原创 2023-08-24 11:04:02 · 602 阅读 · 0 评论 -
【TypeScript】Mixins 混入
在 TypeScript 中,实现 Mixins(混入)可以通过组合类和使用接口的方式来实现。Mixins 允许将一个或多个类的特性“混合”到另一个类中,从而实现代码的重用和组合。需要注意的是,如果两个 Mixins 中存在相同名称的方法或属性,那么 TypeScript 会根据类的继承顺序来确定具体使用哪个方法或属性。在实际应用中,可能会遇到更复杂的场景,需要更灵活的 Mixins 实现方式。有时候,使用接口来描述 Mixins 的合成类型可能更加适合。原创 2023-08-24 09:17:12 · 233 阅读 · 0 评论 -
【TypeScript】declare 和 声明文件
它主要⽤于在编译时进⾏静态类型检查,并在编译后移除声明的代码,以减少 JavaScript ⽂件的⼤⼩。在 TypeScript 中,声明文件(Declaration Files)用于描述已有 JavaScript 代码库的类型信息,以便在 TypeScript 项目中使用这些代码库时获得类型支持。当你在 TypeScript 项目中引用外部 JavaScript 模块或库时,可能会缺乏类型信息,这时可以通过声明文件来告诉 TypeScript 如何正确地使用这些模块或库。的新声明(.d.ts)文件。原创 2023-08-23 23:55:57 · 719 阅读 · 0 评论 -
【TypeScript】namespace 命名空间
在 TypeScript 中,命名空间(Namespace)是一种用于组织和管理代码的机制,它可以避免全局作用域下的命名冲突,并将相关的代码封装在一个命名空间内。相反地,如果一个文件不带有顶级的import或者export声明,那么它的内容被视为全局可见的。在使⽤模块时,可以使⽤ import 和 export 进⾏代码的导⼊和导出,可以更⽅便地组织和。需要注意的是,在现代 TypeScript 中,命名空间的使用已经逐渐被模块化替代。在命名空间中,如果要在外部访问命名空间中的成员,需要使用。原创 2023-08-23 21:55:26 · 1084 阅读 · 0 评论 -
【TypeScript】tsconfig.json 配置文件
include 是一个文件或文件夹的数组, exclude 是一个文件或文件夹的数组。如果不指定,编译器默认包含当前目录及其子目录下的所有 TypeScript 文件 ( .ts , .d.ts 和 .tsx ),排除 node_modules 、 bower_components 、 jspm_ packages 目录以及 outDir 指定的目录。tsconfig.json 是 TypeScript 项目的配置文件,用来指定编译器的行为、编译选项以及包含的文件。原创 2023-08-23 21:22:25 · 559 阅读 · 0 评论 -
【TypeScript】泛型
泛型(Generics)是 TypeScript 中一个重要的概念,它允许你在编写可重用、灵活的函数、类或接口时,参数或返回值的类型变成一个占位符。将 index.ts 同步编译到 index.js ,在 index.html 中引入 ‘./index.js’,当然也还是可以使用其他类型。变量时,我们指定了泛型类型为。接口约束了泛型类型必须有一个。接口的约束)的参数,并输出其。接口,它接受一个类型参数。也可以添加默认类型,例如。这里我们创建了一个泛型类。,它可以接受两个类型参数。在实例化时,我们指定了。原创 2023-08-23 10:09:23 · 217 阅读 · 0 评论 -
【TypeScript】Symbol 类型、生成器、迭代器
在 TypeScript (TS) 中,Symbol是一种基本数据类型,用于创建独一无二的标识符。它是 ECMAScript 6(ES6)引入的新特性,并且也被 TypeScript 支持。Symbol可以用于创建对象属性、类成员、和其他上下文中,以确保它们的唯一性,从而避免命名冲突和混淆。下面是一些关于在 TypeScript 中使用Symbol。原创 2023-08-23 09:36:05 · 1110 阅读 · 0 评论 -
【TypeScript】never 类型
是一种特殊的类型,表示永远不会发生的值或类型。它通常用于表示一些绝对不可能出现的情况,例如永远不会返回的函数类型或在某些条件下绝对不会发生的值。函数永远不会正常返回,它总是会抛出一个错误,因此其返回类型是。表示不可能的情况,因此在联合类型中,如果其中一个分支的类型是。用于在工作中查询类型 a 中,是否都存在 switch 中。,那么该联合类型实际上将被缩减为其他分支的类型。在 TypeScript 中,在条件类型中,如果条件判断为。原创 2023-08-22 16:50:03 · 620 阅读 · 0 评论 -
【TypeScript】类型推论和类型别名
TypeScript 的类型推断是一种编译器能够自动分析代码并确定变量的类型的功能。它允许你在声明变量时省略类型注释,让 TypeScript 根据变量的值来推断出合适的类型。${原创 2023-08-22 16:25:46 · 172 阅读 · 0 评论 -
【TypeScript】枚举类型
在 TypeScript 中,枚举(Enum)是一种用于定义命名常量集合的数据类型。枚举使代码更加可读和可维护,因为它们为一组具有语义的值提供了命名。枚举中的每个成员都有一个关联的数字值,称为枚举值。默认情况下,从 0 开始,逐一递增。枚举成员的值可以手动指定,从而覆盖默认的递增行为。枚举值可以通过成员的名字或者成员的值来访问。枚举可以具有字符串、数字、或者混合类型的值。支持数字,不支持字符串。原创 2023-08-21 17:24:22 · 1873 阅读 · 0 评论 -
【TypeScript】元组
元组(Tuple)是 TypeScript 中的一种特殊数据类型,它允许你定义一个固定数量和类型的元素组合。元组可以包含不同类型的数据,每个数据的类型在元组中都是固定的。元组可以包含多种不同类型的数据,但每个数据的类型是固定的,按照声明的顺序排列。元组的长度是固定的,一旦声明,就不能改变。你不能往元组中添加或删除元素。元组的类型根据声明时的类型推断来确定,可以在声明时明确指定类型。如果访问超出了元组的索引范围,TypeScript 将会报错。可以通过索引来访问元组中的元素,索引从 0 开始。原创 2023-08-21 16:39:50 · 266 阅读 · 0 评论 -
【TypeScript】抽象类(基类)
抽象类(Abstract Class)是 TypeScript 中一种特殊的类,它不能直接实例化,只能被继承。抽象类用于定义一些共同的属性和方法,但又不能完整地实例化的类,它可以作为其他类的基类,通过继承来共享属性和方法。定义的方法,都只能描述,没有实际的实现,需要在子类中进行实现。原创 2023-08-21 16:24:18 · 522 阅读 · 0 评论 -
【TypeScript】class 类
在 TypeScript 中,class关键字也可以用于创建类,与 JavaScript 相似,但 TypeScript 增加了类型注解和类型检查的功能,使得类的使用更加安全和强大。原创 2023-08-21 15:54:30 · 173 阅读 · 0 评论 -
【TypeScript】内置对象
JavaScript 中很多内置对象,可以直接在 TypeScript 中当做定义好了的类型。原创 2023-08-21 00:00:16 · 198 阅读 · 0 评论 -
【Vue3 + TypeScript】报错 Could not find a declaration file for module ... / 找不到模块或其相应的类型声明
在 Vue3 + Typescript 项目中,报错 Could not find a declaration file for module ./layouts/BasicLayout.vue . c:/Codefield/项目/yupao-frontend/src/layouts/BasicLayout.vue.js implicitly has an any type. 或者 找不到模块或其相应的类型声明。原创 2023-08-17 16:30:45 · 2594 阅读 · 0 评论 -
【TypeScript】类型断言、联合类型、交叉类型
通过关键字extends进行约束,不同于在 class后使用extends的继承作用,泛型内使用的主要作用是对泛型加以约束。类型别名会给一个类型起个新名字,类型别名有时和接口很像,但是可以作用于原始值、联合类型、元组以及其它任何需要手写的类型。联合类型的语法规则和逻辑“或”的符号一致,表示其类型为连接的多个类型中的任意一个,本质上是一个。keyof 类似于 Object.keys,用于获取一个接口中 Key 的联合类型(或)。可以看到,类型别名和接口使用十分相似,都可以描述一个对象或者函数。原创 2023-08-17 09:23:26 · 141 阅读 · 0 评论 -
【TypeScript】函数类型
/ 函数类型表达式return 213。原创 2023-08-16 16:36:39 · 290 阅读 · 0 评论 -
【TypeScript】数组类型
【代码】【TypeScript】数组类型。原创 2023-08-16 11:46:27 · 203 阅读 · 0 评论 -
【TypeScript】对象类型定义(interface 和 type)
在 TypeScript 中,接口(Interface)是一种用于定义对象结构的约定,它描述了对象应该具有的属性和方法。接口提供了一种定义约束,使你能够在编写代码时明确地指定对象的形状和类型。接口在开发中常用于定义对象的结构、类的实现以及函数的参数和返回值。然后,我们创建了一个符合该接口结构的。在上面的示例中,我们定义了一个名为。原创 2023-08-16 11:24:15 · 250 阅读 · 0 评论 -
【TypeScript】任意类型
【代码】【TypeScript】任意类型。原创 2023-08-16 09:40:40 · 189 阅读 · 0 评论 -
【TypeScript】数据类型
总结就是 在 JavaScript 基础上 添加了 void ,any, enum 等原始类型。boolean(布尔类型)number(数字类型)string(字符串类型)array(数组类型)tuple((元组类型)enum(枚举类型)any(任意类型)null和undefined类型void类型never类型object对象类型。原创 2023-08-16 00:38:36 · 855 阅读 · 0 评论 -
【TypeScript】tsc -v 报错 —— 在此系统上禁止运行脚本
在 VS Code 终端中执行 tsc -v ,报错 —— 在此系统上禁止运行脚本。问题解决,同时在 VS Code 终端中执行 tsc -v 也不会报错。然后 windows + x ,打开终端管理员,出现同样的问题。出现 RemoteSigned 则代表更改成功。原创 2023-08-16 00:04:39 · 1754 阅读 · 0 评论