![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ts
ts基础
每天吃饭的羊
学不完,根本学不完
展开
-
Partial 和 Required
类型的所有属性,并且它们都是必需的。如果你尝试创建一个缺少任何必需属性的对象,TypeScript 将会产生错误。是 TypeScript 中的两个有用的泛型工具类型,它们可以帮助你更灵活地处理对象的类型。这两个工具类型可以在编写类型安全的代码时提供便利,使你能够更精确地定义对象的形状。类型部分属性的对象,并且这些属性都是可选的。类型允许你创建一个只包含。原创 2023-12-11 16:11:54 · 157 阅读 · 0 评论 -
keyof(小写) 和 Object.keys
UserKeys 就是 "id" | "name"js中的Object.keys是对象的。原创 2023-12-11 15:57:20 · 243 阅读 · 0 评论 -
Omit和Pick
Omit:两个入参,第一个是对象,第二个是对象里的属性名(一个或多个),用于。Pick:两个入参,第一个是对象,第二个是对象里的属性名(一个或多个),用于。原创 2023-12-06 12:59:44 · 536 阅读 · 0 评论 -
Record<K, T>
说白了就是指定对象的key,value的数据类型的,它并不能转换数据的类型,只是告诉编辑器,数据是什么类型的。的作用主要在于提供了一种方便的方式来声明对象的结构,强调了键和值之间的关系。用于创建具有指定属性键和相应值类型的对象类型。原创 2023-12-06 11:24:38 · 375 阅读 · 0 评论 -
Exclude,Extract(Exclude:排除 Extract提取)
其中,`Exclude`返回一个新类型,该类型是`T`中不属于`U`的部分;在TypeScript中,`Exclude`和`Extract`都是条件类型,用于根据类型`U`排除或提取类型`T`中的某些部分。// 同时使用Exclude和Extract原创 2023-11-27 02:33:19 · 619 阅读 · 0 评论 -
协变(子类可以赋值给父类)和逆变(父类可以赋值给子类)
函数入参是逆变的,返回值是协变的。原创 2024-07-27 16:27:46 · 73 阅读 · 0 评论 -
这次是真的学会infer了
类型太多了,这里就举例string,number,boolean这几种类型,效果是一样的,结果都是返回入参的数据类型,类似于typeof,它和typeof,各种数据类型是属于同一级别的方法。2.这里推导数组里某个值的数据类型。手写个infer,看了很简单的。原创 2024-07-25 19:57:12 · 161 阅读 · 0 评论 -
type Required<T> = { [P in keyof T]-?: T[P] } 这里的-?是干啥用的,+?是干啥用的
修饰符的作用是从一个联合类型中去除属性的可选性。当一个属性原本是可选的(即可以省略),使用。相反,它将属性标记为可选的。如果属性原本就是可选的,那么。但如果属性是必需的,那么。后,该属性就变成了必需的(必须被指定)。去掉问号,变成必选属性。加上问号,变成可选属性。原创 2024-07-25 19:29:47 · 175 阅读 · 0 评论 -
ts源码2
https://github.com/Microsoft/TypeScript原创 2024-07-25 16:20:08 · 91 阅读 · 0 评论 -
ts -> class -> abstract
类,TypeScript 编译器会报错,因为抽象类不能被实例化。只有当子类实现了所有抽象方法之后,才能被正确地实例化和使用。抽象类不能被实例化,而抽象方法必须在派生类中被实现。在TypeScript中,你可以直接使用。是一个抽象类,它包含了一个抽象方法。关键字来定义抽象类和抽象方法。方法(是必须,不然会报错)如果你试图直接实例化。原创 2024-07-24 15:25:18 · 199 阅读 · 0 评论 -
类型谓词 is
然后在后续处理的时候就可以大胆放心的使用value这个类型为number的值。以上是两个函数,但是在()后面确是不同的用法。第二个属于函数的返回值类型。第一个val is null属于类型谓词。原创 2024-07-22 11:21:48 · 149 阅读 · 0 评论 -
promise + ts
这里使用interface定义函数,是可以的,但也是第一次见 【入参】:【返回值】现在有这么个代码,是有问题的。原创 2024-07-18 10:54:38 · 92 阅读 · 0 评论 -
泛型中<>和()中的类型
这样做的好处是,我们可以在调用函数时显式地指定参数的类型,而不是依赖类型推断。这对于合并不同类型的数组非常有用,因为我们可以确保传递给函数的参数类型是我们期望的类型。如果不指定类型参数,TypeScript 会尝试根据传递的参数推断出类型,但有时候推断结果可能不是我们想要的。因此,通过明确指定类型参数,我们可以更精确地定义函数的行为。中的类型参数用于定义函数内部的类型,并与函数参数的类型进行关联。然后,在调用函数时,我们通过。原创 2024-06-17 00:04:31 · 140 阅读 · 0 评论 -
type GetNamespaces<M> = { [K in keyof M]: M[K] extends { namespace: string } ? M[K][‘namespace
是一个包含多个属性的接口,每个属性都是一个对象,可能包含一个。,其中包含多个属性,每个属性都是一个对象,而这些对象可能具有。属性的子属性的集合。类型来定义函数参数,确保只能传递有效的命名空间。现在我们想要从这些对象中提取所有具有。属性的子属性的集合,并将其赋值给。下面是一个示例,演示了如何使用。类型可以用于从一个对象类型。假设我们有一个对象类型。属性的子属性的集合。原创 2024-04-15 18:05:18 · 219 阅读 · 0 评论 -
Awaited,Promise
现在,我们想要在另一个文件中使用这个异步函数的返回值,并且希望能够推断出这个返回值的类型。函数,它返回一个 Promise,我们等待该 Promise 解析,并将结果赋给。这将返回一个 Promise,该 Promise 的解析值类型为。函数返回的 Promise 的类型,你可以直接使用。下面是一个简单的示例,展示了如何使用。在这个示例中,我们首先定义了一个类型。对象的属性,这些属性的类型是根据。函数并等待其解析,然后使用。的类型,而不需要手动指定。函数返回的类型推断出来的。在这个示例中,我们使用。原创 2024-04-15 18:02:28 · 371 阅读 · 0 评论 -
InstenceType
在 TypeScript 中,InstanceType 是一个用于获取构造函数类型的实例类型的工具类型。它接受一个构造函数类型,并返回该构造函数的实例类型。这对于在编写 TypeScript 代码时操作类和构造函数非常有用。这样可以在编写 TypeScript 代码时,以类型安全的方式操作类和构造函数的实例类型。来获取它的实例类型。在这个示例中,我们首先定义了一个类。,它有一个构造函数和一个方法。的构造函数类型,并使用。的一个实例,然后调用了。原创 2024-04-12 17:12:13 · 259 阅读 · 0 评论 -
索引签名Argument of type ‘Person‘ is not assignable to parameter of type ‘Record<string, string>‘ Index
可以添加索引签名([key: string]: string;原创 2024-04-12 11:08:01 · 203 阅读 · 0 评论 -
extends 和 implements
以下是extends和implements。原创 2024-01-24 17:36:19 · 382 阅读 · 0 评论 -
非空断言操作符(!.)和可选链运算符(?.),类型非空断言(!:),类型可选(?:)
则是一种防御性编程工具,用于条件地访问可能不存在的属性或方法。是用来强制告诉编译器一个值一定存在,而可选链运算符。服务于不同的目的,尽管它们都与处理可能为。在TypeScript中,非空断言操作符。原创 2024-01-24 16:47:18 · 616 阅读 · 0 评论 -
DI和IOC
而在依赖注入的模式下,创建和管理依赖关系的责任从被依赖的对象转移到了外部容器或者客户端代码中。而依赖注入则是这一理念在实际编程中的体现,它是控制反转的具体实现途径之一,通过注入依赖对象的方式达到解耦的目的。: 控制反转是一个更抽象的概念,它描述了一种程序设计原则,在这种原则下,对象不再负责自身的生命周期管理和依赖获取,而把这些控制权“反转”交给了一个第三方框架或容器来处理。DI 则是 IoC 的一种具体应用,通过依赖注入机制实现了控制权的反转,降低了组件间的耦合度,提高了系统的灵活性和可维护性。原创 2024-01-24 15:31:10 · 366 阅读 · 0 评论 -
Optional,联合转交叉,GetOptional,泛型函数,联合/交叉,MyPick,pick
【代码】手写一个Optional。原创 2024-01-24 15:14:54 · 508 阅读 · 0 评论 -
何时声明类型
3、获取某个值的某些属性时:let strLength: number = (someValue as string).length;// 类型断言为 string。2、定义函数和它的入参时fuction<string>(a:string):string{}1、定义值时a:string = 'weqrw'原创 2024-01-24 14:45:08 · 319 阅读 · 0 评论 -
ReturnType, Parameters
是一个内置的类型操作符,它用于提取函数类型的返回值类型。当你需要基于一个函数类型来定义另一个类型时,这个工具类非常有用。通过这种方式,你可以根据函数的实际返回类型创建新的类型,并且在处理包含泛型的函数时具有很好的灵活性和可读性。在TypeScript中,原创 2024-01-23 11:38:33 · 499 阅读 · 0 评论 -
infer学习
关键字用于在类型推断上下文中捕获泛型中的类型。它主要用于在定义条件类型或者创建复杂的类型映射时,从已知类型中派生出未知类型。类型中被用来表示数组元素的具体类型,并且通过类型守卫检查和条件类型来提取出来。TypeScript 中的。所代表的函数的返回类型。以下是一个简单的使用。原创 2024-01-15 18:00:15 · 432 阅读 · 0 评论 -
type和interface的区别
在设计项目时,可以根据需要选择合适的类型定义方式。在最新的 TypeScript 版本中,很多原本只能通过。可以互换使用,尤其是在描述对象结构的时候。但在需要声明合并、映射类型等特性时,必须使用。上使用,两者之间的差异在减少。TypeScript 中的。总的来说,在大多数情况下,实现的功能也逐渐能在。原创 2024-01-10 13:44:09 · 592 阅读 · 0 评论 -
infer。。。。
关键字用于从表达式中推断类型。它通常与条件类型(conditional types)一起使用,在条件类型的分支中可以推断出一个新的类型。条件类型,它接受一个函数类型作为参数,并根据函数的返回类型来推断一个新的类型。下面是一个示例,展示了如何在 TypeScript 中使用。,然后将其作为条件类型的返回结果。希望这个示例能帮助你理解如何使用。在上面的示例中,我们定义了一个。函数的类型中推断出返回类型是。在 TypeScript 中,,我们将返回类型赋值给。原创 2024-01-09 15:52:07 · 519 阅读 · 0 评论 -
tsDom类型和鼠标事件
typescript中常规的dom元素和event事件类型声明-tech99 知识搜索引擎原创 2024-01-03 14:10:52 · 373 阅读 · 0 评论 -
Ref和类型断言
以上代码示例展示了类型断言在不同场景中的应用。请注意,虽然类型断言可以帮助你更精确地控制类型,但过度使用或错误使用类型断言可能会导致类型错误或降低代码的可维护性。因此,在使用类型断言时应谨慎并确保其正确性。原创 2023-12-26 01:52:30 · 975 阅读 · 0 评论 -
字符串数组和number数组,Promise类型
定义字符串数组和number数组。原创 2023-12-21 13:59:35 · 304 阅读 · 0 评论 -
Pair<T, U>
在 TypeScript 中,您可以自巧妇难为无米之炊。TypeScript 本身并没有内置的。两个属性,分别表示有序对中的第一个和第二个元素的类型。表示一个包含两个元素的有序对(pair)。这是一种泛型类型,其中。类型用于表示两个相关联的值,例如一对坐标、一对键值等。类型,但您可以自己定义这个类型。分别表示有序对中第一个和第二个元素的类型。提供具体的类型,可以创建适用于不同类型的有序对。是一个简单的对象,其中包含。原创 2023-12-06 18:26:08 · 238 阅读 · 0 评论 -
ts+map函数
函数的基本用法与 JavaScript 类似,但是您可以使用类型注解来明确函数的输入和输出类型。以下是一个 TypeScript 中使用。在 TypeScript 中,使用。原创 2023-12-06 16:11:22 · 548 阅读 · 0 评论 -
非空断言(!.)
非空断言是一种有用的工具,但在使用时需要谨慎。在某些情况下,通过编写更严格的类型声明或者进行条件检查可能更为安全。需要注意的是,在使用非空断言时,你必须确保你的断言是安全的。如果你在运行时对可能为。,那么 TypeScript 不会提供警告,这可能导致运行时错误。符号实现的,用于告诉 TypeScript 编译器某个值不为。非空断言是一种告诉编译器“我知道这个值不会为。在 TypeScript 中,非空断言是通过。的值使用非空断言,并且这个值确实为。或 `undefined”的方式。原创 2023-11-30 17:29:31 · 307 阅读 · 0 评论 -
类型断言,
类型断言在编译时起作用,不会在运行时进行实际的类型转换。如果断言的类型不正确,编译器不会报错,但在运行时可能会导致错误。当你使用类型断言时,你需要确保你知道实际的类型,否则可能会导致运行时错误。在使用类型断言之前,最好尽量避免不确定的类型。在 TypeScript 中,类型断言是一种告诉编译器某个值的具体类型的方式。用于处理一些特殊情况,但在平时的代码中应该慎用,尽量依赖 TypeScript 的类型推断。总的来说,类型断言是 TypeScript 中一种灵活的机制,是类型断言的关键词,同样用于将。原创 2023-11-30 17:22:49 · 78 阅读 · 0 评论 -
ts中的is
这里的implements 相当于interface的实例化,它的内容不仅限于方法,还可以对值示例化。类似于new class的用法。原创 2023-11-28 09:22:16 · 182 阅读 · 0 评论 -
keyof
/ 报错,因为'Person'类型中没有'middleName'属性。// 那么,`keyof Person`将会返回`"firstName" | "lastName" | "age"`的联合类型,// 在这个例子中,`getProperty`函数接受一个对象和一个属性名,并返回那个属性的值。// 它允许你从一个类型中提取所有的可枚举属性名,并将它们组成一个联合类型。// 但是,如果传递的属性名不在指定的对象类型中,则会抛出错误。// 在TypeScript中,`keyof`是一个操作符,原创 2023-11-27 02:34:01 · 227 阅读 · 0 评论 -
v3结合ts积累
【代码】v3结合ts积累。原创 2023-11-24 10:35:07 · 37 阅读 · 0 评论 -
ts中的事件类型
ts中常用的Event 事件对象类型 - 简书原创 2023-11-22 10:22:35 · 200 阅读 · 0 评论 -
泛型约束 太难了
这里的T作为一个入参类型,那么入参val是一个{key:value,key:value}的结构。这里的 T extends Class就是class中继承的写法如下。回到我们最开始的泛型约束,T extends Class后就有了。那么就顺理成章的有val.key的出现,就是 val.name。相当于在BaseClass类中定义了一个对象和方法。DerivedClass类继承后也有了这个属性和方法。这里我们抛去方法不谈,有点像如下的结构。原创 2023-11-01 16:37:53 · 64 阅读 · 0 评论 -
学不会的泛型
ts 终于搞懂TS中的泛型啦! | typescript 入门指南 04 - 掘金【TypeScript】TS进阶-泛型(十) - 掘金 (juejin.cn)原创 2023-10-31 16:37:47 · 51 阅读 · 0 评论 -
export const isDef = <T = unknown>(val?: T): val is T => { return typeof val !== “undefined“; }
在 JavaScript 中,函数的参数默认是必需的。在这个具体的例子中,isDef函数使用类型参数T来检查传入的值是否定义(未定义的值为undefined)。如果未提供类型参数T,则默认为unknown类型,这样T值未定义时的行为就是预期的。如果在调用函数时没有为类型参数提供具体类型,则类型参数将被自动设置为unknown类型。在这个语句中,"T = unknown" 是一个类型参数的默认值定义。它指定如果在调用这个泛型函数时没有为类型参数提供具体的类型,那么类型参数T的默认类型将是unknown。原创 2023-10-31 16:33:24 · 73 阅读 · 0 评论