TypeScript基础
文章平均质量分 84
夜已如歌_ok
这个作者很懒,什么都没留下…
展开
-
TypeScript基础之object、Object、{}区别
学习TypeScript中object、Object、{}区别原创 2022-07-01 09:30:02 · 2392 阅读 · 0 评论 -
TypeScript基础之泛型介绍
文中内容都是参考https://www.typescriptlang.org/docs/handbook/2/generics.html内容。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。设计泛型的关键目的是在成员之间提供有意义的约束,这些成员可以是:类的实例成员、类的方法、函数参数和函数返回值在之前underscore源码解析内部函数createAssigner、cb和optimizeCb中讲过identity原创 2022-07-01 09:28:20 · 247 阅读 · 0 评论 -
TypeScript基础之typeof 类型操作符
TypeScript中的typeof常见用途是在类型上下文中获取变量或者属性的类型, 此外还可以配合获取函数的返回值类型, 以及配合 ReturnType 使用获取函数的返回值类型, 以及配合 keyof使用原创 2022-06-26 20:54:07 · 5143 阅读 · 2 评论 -
TypeScript基础之模版字面量类型
TypeScript基础之模版字面量类型原创 2022-06-22 22:13:15 · 800 阅读 · 0 评论 -
TypeScript基础之const断言
TypeScript const类型断言原创 2022-06-21 17:16:08 · 822 阅读 · 0 评论 -
TypeScript基础之keyof 类型操作符
对一个对象类型使用 keyof 操作符,会返回该对象属性名组成的一个字符串或者数字字面量的联合类型。原创 2022-06-19 19:13:24 · 2333 阅读 · 2 评论 -
TypeScript基础之枚举、泛型的兼容性
文中内容都是参考https://www.typescriptlang.org/docs/handbook/type-compatibility.html#handbook-content 内容。枚举类型与数字类型兼容,并且数字类型与枚举类型兼容。比如,不同枚举类型之间是不兼容的, 如下例:泛型的兼容性因为TypeScript是结构性的类型系统,对于泛型的兼容性, 只有当它的类型参数被一个成员使用时,才会影响其兼容性。如下:以上代码里, 和是兼容的, 因为它们的结构使用类型参数时并没有什么不同。即类原创 2022-06-18 16:37:39 · 492 阅读 · 0 评论 -
TypeScript基础之类的类型兼容性
文中内容都是参考https://www.typescriptlang.org/docs/handbook/type-compatibility.html#handbook-content 内容。类与对象字面量和接口差不多,但有一点不同:类有静态部分和实例部分的类型。在比较两个类型是否兼容时,除了遵照, 还需要注意以下几点:举例进行分析:以上代码中, 类与类拥有共同的属性, 即使它们的构造函数不同, 这两个类也是互相兼容。类的私有成员和受保护成员会影响兼容性。 当检查类实例的兼容时,如果目标类型包含一个原创 2022-06-18 16:35:32 · 357 阅读 · 0 评论 -
TypeScript基础之类型拓宽(Type Widening)
TypeScript基础之类型拓宽(Type Widening), 拓宽的字面量类型, 非拓宽的字面量类型, 非拓宽字面量类型的用处原创 2022-06-16 15:58:30 · 471 阅读 · 4 评论 -
TypeScript基础之类型收窄(Type Narrowing)
介绍TypeScript类型收窄(Type Narrowing),包括typeof 类型保护、真值收窄、等值收窄、in 操作符收窄、赋值语句、控制流分析、可辨别联合、never、穷尽检查原创 2022-06-15 15:26:43 · 892 阅读 · 1 评论 -
TypeScript基础之结构类型和Freshness
TypeScript 类型兼容性是基于结构类型的;结构类型只使用其成员来描述类型。 类型检查关注的是值的形状, 即。而且一般通过interface定义类型,其实就是定义形状与约束。 所以定义interface其实是针对结构来定义新类型。对于Typescript来说,两个类型只要结构相同,那么它们就是同样的类型。简单来说就是 如果x要兼容y,那么y至少具有与x相同的属性。比如:这里要检查y是否能赋值给x,编译器检查x中的每个属性,看是否能在y中也找到对应属性。 在这个例子中,y必须包含名字是name的s原创 2022-06-13 20:32:52 · 665 阅读 · 0 评论 -
TypeScript基础之类型断言
文中内容基本上参考https://ts.xcatliu.com/basics/type-assertion.html 。TypeScript中类型断言()可以用来手动指定一个值的类型,用来覆盖TS中的推断。当 TypeScript 确定赋值无效时,我们可以选择使用类型断言来覆盖类型。如果我们使用类型断言,赋值总是有效的,所以我们需要确保我们是正确的。否则,我们的程序可能无法正常运行。两种执行类型断言的方法:基本使用然而,当你在JSX中使用 的断言语法时,会产生语法冲突,因此建议使用 的语法来类型断原创 2022-06-12 17:40:26 · 1607 阅读 · 3 评论 -
TypeScript基础之非空断言操作符、可选链运算符、空值合并运算符
先看以下代码:对于以上代码, TypeScript编译器会提示以下错误信息:要解决以上问题,我们可以加个条件判断:此外, 可以使用TypeScript2.0中提供的非空断言操作符()。语法非空断言操作符操作符 可以用于断言操作对象是非 null 和非 undefined 类型。即: 将从 值域中排除 和 。所以以上代码可以改造为:看下编译结果:可以看出非空断言操作符从编译生成的JS代码中移除掉了, 如果handler函数调用时传入或时,会出现以下运行时错误:所以在实际使用时需要注意。原创 2022-06-10 21:34:01 · 4108 阅读 · 0 评论 -
TypeScript基础之常见类型(基本类型、any、unknown、void、never)
默认情况下 和 是所有类型的子类型, 即可以把 和 赋值给其他类型。 tsconfig.json指定了, 和 只能赋值给 、 和它们各自的类型, 可以赋值给类型;以下代码在严格模式下( )下运行:以下代码在非严格模式下(指定了), 可以把 和 赋值给其他类型 如果出现 需要把ypeScript编译器目标设置为es2020在赋值过程中改变类型是不被允许的。虽然和 都表示数字,但是这两个类型不兼容。对于包装类型注意: 是包装类型, 而是原始类型,不要混淆。从类型兼容性上看, 原始类型兼容对原创 2022-06-09 16:07:54 · 1796 阅读 · 0 评论 -
TypeScript基础之类型保护
先来看看JavaScript中typeof的用法:具体可参考 MDN typeofTypeScript中的主要用途是在类型上下文中获取变量或者属性的类型。如:获取对象的类型以上代码中通过typeof获取到person对象的类型,之后我们就可以使用Person类型。对于嵌套对象也是一样:此时UserInfo类型如下:获取函数的类型此时Add类型为instanceof先来看看JavaScript中instanceof的用法:具体可参考 MDN instanceofTypeS原创 2022-06-08 16:29:08 · 661 阅读 · 0 评论 -
TypeScript基础之类型推断
类型推断是有方向的,要注意区分从左向右和从右向左两种推断的不同引用。基础类型推断发送在在TypeScript中,使用const和let声明的类型,默认推断出的类型是不同的,如:解释: 当我们将一个字面量类型声明为常量,我们就不能再对其进行修改了,因此将其类型推断为赋值的字面量类型,是一种比较合理的设计。而使用 let 声明的字面量类型,因为我们还拥有将其修改为该类型其他字面量的权利,因此TypeScript将其类型转换为了赋值字面量类型的父类型,这种设计也是符合编程预期的。我们将 TypeScript原创 2022-06-07 18:12:28 · 440 阅读 · 0 评论 -
TypeScript基础之联合类型、交叉类型、类型别名
联合类型表示取值可以为多种类型中的一种,使用 分割每个类型。函数中使用:约束取值以上1 | 2, true | false, ‘click’ | ‘scroll’ | 'mousemove’被称为字面量类型,分别为数字、布尔、字符串字面量类型,可以用来约束取值只能是其中几个值中的一个。交叉类型是将多个类型合并为一个类型,使用定义交叉类型。可以将多个接口类型合并成一个类型,实现等同于接口继承的效果合并的接口类型存在同名属性是什么效果?如果同名属性的类型兼容,比如一个是number,另一个是nu原创 2022-06-06 20:48:06 · 1630 阅读 · 0 评论 -
TypeScript基础之元组(Tuple)
我们知道数组中元素的数据类型都一般是相同的(any[] 类型的数组可以不同),如果存储的元素数据类型不同,则需要使用元组。元组是一种数据类型,可以像任何其他变量一样使用。它表示值的异构集合,也可以作为函数调用中的参数传递。在抽象数学中,术语元组用于表示多维坐标系。JavaScript 没有元组作为数据类型,但在 TypeScript 中可以使用元组。元组中元素的顺序很重要。元组类型只能表示一个已知元素数量和类型的数组,长度已指定,元素类型顺序必须是完全对照的,否则会出现错误信息。虽然可以越界添加元原创 2022-06-05 17:52:51 · 993 阅读 · 0 评论 -
TypeScript基础之接口(Interfaces)
接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。接口处理可用于对类的一部分行为进行抽象外,也常用于对对象的形状进行描述。接口定义如下:在声明一个对象、函数或者类时,先定义接口,确保其数据结构的一致性;以上我们定义了一个接口IPerson,接着定义了一个变量person,它的类型是IPerson。这样,我们就约束了 的形状必须和接口 一致。接口属性可选属性接口里的属性不全都是必需的。原创 2022-06-05 17:51:45 · 932 阅读 · 1 评论 -
TypeScript基础之函数重载
和JavaScript一样,TypeScript函数可以创建有名字的函数和匿名函数。为函数定义类型由于 JavaScript 是一个动态语言,我们通常会使用不同类型的参数来调用同一个函数,该函数会根据不同的参数而返回不同的类型的调用结果:以上代码在JS环境中运行是没有问题的,但是如果在TypeScript环境下且TypeScript编译器开启配置项时,以上代码会提示以下错误信息:该信息告诉我们参数 x 和参数 y 隐式具有 类型。为了解决这个问题,我们可以为参数设置一个类型。因为我们希望 函原创 2022-06-05 17:50:26 · 1451 阅读 · 0 评论