
ts
ts基础
每天吃饭的羊
学不完,根本学不完
展开
-
Partial 和 Required
类型的所有属性,并且它们都是必需的。如果你尝试创建一个缺少任何必需属性的对象,TypeScript 将会产生错误。是 TypeScript 中的两个有用的泛型工具类型,它们可以帮助你更灵活地处理对象的类型。这两个工具类型可以在编写类型安全的代码时提供便利,使你能够更精确地定义对象的形状。类型部分属性的对象,并且这些属性都是可选的。类型允许你创建一个只包含。原创 2023-12-11 16:11:54 · 199 阅读 · 0 评论 -
keyof(小写) 和 Object.keys
UserKeys 就是 "id" | "name"js中的Object.keys是对象的。原创 2023-12-11 15:57:20 · 309 阅读 · 0 评论 -
Omit和Pick
Omit:两个入参,第一个是对象,第二个是对象里的属性名(一个或多个),用于。Pick:两个入参,第一个是对象,第二个是对象里的属性名(一个或多个),用于。原创 2023-12-06 12:59:44 · 747 阅读 · 0 评论 -
Record<K, T>
说白了就是指定对象的key,value的数据类型的,它并不能转换数据的类型,只是告诉编辑器,数据是什么类型的。的作用主要在于提供了一种方便的方式来声明对象的结构,强调了键和值之间的关系。用于创建具有指定属性键和相应值类型的对象类型。原创 2023-12-06 11:24:38 · 499 阅读 · 0 评论 -
Exclude,Extract(Exclude:排除 Extract提取)
其中,`Exclude`返回一个新类型,该类型是`T`中不属于`U`的部分;在TypeScript中,`Exclude`和`Extract`都是条件类型,用于根据类型`U`排除或提取类型`T`中的某些部分。// 同时使用Exclude和Extract原创 2023-11-27 02:33:19 · 692 阅读 · 0 评论 -
类型断言, 类型注解
下面分别介绍将改为以及反向更改时会发生的情况,并给出相应的代码示例。原创 2025-03-07 17:27:13 · 296 阅读 · 0 评论 -
unknow和any的区别
any类型会完全绕过 TypeScript 的类型检查,提供最大的灵活性,但会牺牲类型安全性,容易引入运行时错误。unknown类型在保证灵活性的同时,强调了类型安全。它要求开发者在使用值之前先进行类型检查或类型断言,有助于减少潜在的运行时错误。因此,在大多数情况下,推荐优先使用unknown类型而不是any类型。原创 2025-02-21 09:29:11 · 404 阅读 · 0 评论 -
ConstructorParameters
是一个非常有用的工具类型,可以帮助你在 TypeScript 中提取和使用构造函数的参数类型。这使得代码更加类型安全,减少了手动维护类型定义的工作量。通过结合泛型和其他 TypeScript 特性,你可以编写出更加灵活和健壮的代码。原创 2024-09-27 16:28:55 · 495 阅读 · 0 评论 -
as 类型断言
这里说下我的感觉,as就类似于 name:string = 'sgje' 和这里的 :string 一样的。在特定的环境中,我们会比TS知道这个值具体是什么类型,不需要TS去判断,简单的理解就是,只是他在定义之前没有明确的定义类型 name = 'sgje'在调用函数使用的时候 name.indexof('8') 使用。来告诉编译器,明确的说明这个变量是string类型。但需要注意的是:尖括号语法在。语法会产生冲突,所以只能使用。原创 2024-09-18 03:35:28 · 416 阅读 · 0 评论 -
as const 已知value获取key值
2.使用as const后每个值的类型变成了具体的值。1.使用后as const后变的不可读了。先看下这里的使用代码。原创 2024-07-30 16:30:27 · 214 阅读 · 0 评论 -
协变(子类可以赋值给父类)和逆变(父类可以赋值给子类)
函数入参是逆变的,返回值是协变的。原创 2024-07-27 16:27:46 · 152 阅读 · 0 评论 -
这次是真的学会infer了
类型太多了,这里就举例string,number,boolean这几种类型,效果是一样的,结果都是返回入参的数据类型,类似于typeof,它和typeof,各种数据类型是属于同一级别的方法。2.这里推导数组里某个值的数据类型。手写个infer,看了很简单的。原创 2024-07-25 19:57:12 · 211 阅读 · 0 评论 -
type Required<T> = { [P in keyof T]-?: T[P] } 这里的-?是干啥用的,+?是干啥用的
修饰符的作用是从一个联合类型中去除属性的可选性。当一个属性原本是可选的(即可以省略),使用。相反,它将属性标记为可选的。如果属性原本就是可选的,那么。但如果属性是必需的,那么。后,该属性就变成了必需的(必须被指定)。去掉问号,变成必选属性。加上问号,变成可选属性。原创 2024-07-25 19:29:47 · 272 阅读 · 0 评论 -
ts源码2
https://github.com/Microsoft/TypeScript原创 2024-07-25 16:20:08 · 144 阅读 · 0 评论 -
ts -> class -> abstract
类,TypeScript 编译器会报错,因为抽象类不能被实例化。只有当子类实现了所有抽象方法之后,才能被正确地实例化和使用。抽象类不能被实例化,而抽象方法必须在派生类中被实现。在TypeScript中,你可以直接使用。是一个抽象类,它包含了一个抽象方法。关键字来定义抽象类和抽象方法。方法(是必须,不然会报错)如果你试图直接实例化。原创 2024-07-24 15:25:18 · 316 阅读 · 0 评论 -
类型谓词 is
然后在后续处理的时候就可以大胆放心的使用value这个类型为number的值。以上是两个函数,但是在()后面确是不同的用法。第二个属于函数的返回值类型。第一个val is null属于类型谓词。原创 2024-07-22 11:21:48 · 205 阅读 · 0 评论 -
promise + ts
这里使用interface定义函数,是可以的,但也是第一次见 【入参】:【返回值】现在有这么个代码,是有问题的。原创 2024-07-18 10:54:38 · 308 阅读 · 3 评论 -
泛型中<>和()中的类型
这样做的好处是,我们可以在调用函数时显式地指定参数的类型,而不是依赖类型推断。这对于合并不同类型的数组非常有用,因为我们可以确保传递给函数的参数类型是我们期望的类型。如果不指定类型参数,TypeScript 会尝试根据传递的参数推断出类型,但有时候推断结果可能不是我们想要的。因此,通过明确指定类型参数,我们可以更精确地定义函数的行为。中的类型参数用于定义函数内部的类型,并与函数参数的类型进行关联。然后,在调用函数时,我们通过。原创 2024-06-17 00:04:31 · 184 阅读 · 0 评论 -
type GetNamespaces<M> = { [K in keyof M]: M[K] extends { namespace: string } ? M[K][‘namespace
是一个包含多个属性的接口,每个属性都是一个对象,可能包含一个。,其中包含多个属性,每个属性都是一个对象,而这些对象可能具有。属性的子属性的集合。类型来定义函数参数,确保只能传递有效的命名空间。现在我们想要从这些对象中提取所有具有。属性的子属性的集合,并将其赋值给。下面是一个示例,演示了如何使用。类型可以用于从一个对象类型。假设我们有一个对象类型。属性的子属性的集合。原创 2024-04-15 18:05:18 · 258 阅读 · 0 评论 -
Awaited,Promise
现在,我们想要在另一个文件中使用这个异步函数的返回值,并且希望能够推断出这个返回值的类型。函数,它返回一个 Promise,我们等待该 Promise 解析,并将结果赋给。这将返回一个 Promise,该 Promise 的解析值类型为。函数返回的 Promise 的类型,你可以直接使用。下面是一个简单的示例,展示了如何使用。在这个示例中,我们首先定义了一个类型。对象的属性,这些属性的类型是根据。函数并等待其解析,然后使用。的类型,而不需要手动指定。函数返回的类型推断出来的。在这个示例中,我们使用。原创 2024-04-15 18:02:28 · 463 阅读 · 0 评论 -
InstenceType
在 TypeScript 中,InstanceType 是一个用于获取构造函数类型的实例类型的工具类型。它接受一个构造函数类型,并返回该构造函数的实例类型。这对于在编写 TypeScript 代码时操作类和构造函数非常有用。这样可以在编写 TypeScript 代码时,以类型安全的方式操作类和构造函数的实例类型。来获取它的实例类型。在这个示例中,我们首先定义了一个类。,它有一个构造函数和一个方法。的构造函数类型,并使用。的一个实例,然后调用了。原创 2024-04-12 17:12:13 · 367 阅读 · 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 · 450 阅读 · 0 评论 -
extends 和 implements
以下是extends和implements。原创 2024-01-24 17:36:19 · 562 阅读 · 0 评论 -
非空断言操作符(!.)和可选链运算符(?.),类型非空断言(!:),类型可选(?:)
则是一种防御性编程工具,用于条件地访问可能不存在的属性或方法。是用来强制告诉编译器一个值一定存在,而可选链运算符。服务于不同的目的,尽管它们都与处理可能为。在TypeScript中,非空断言操作符。原创 2024-01-24 16:47:18 · 767 阅读 · 0 评论 -
DI和IOC
而在依赖注入的模式下,创建和管理依赖关系的责任从被依赖的对象转移到了外部容器或者客户端代码中。而依赖注入则是这一理念在实际编程中的体现,它是控制反转的具体实现途径之一,通过注入依赖对象的方式达到解耦的目的。: 控制反转是一个更抽象的概念,它描述了一种程序设计原则,在这种原则下,对象不再负责自身的生命周期管理和依赖获取,而把这些控制权“反转”交给了一个第三方框架或容器来处理。DI 则是 IoC 的一种具体应用,通过依赖注入机制实现了控制权的反转,降低了组件间的耦合度,提高了系统的灵活性和可维护性。原创 2024-01-24 15:31:10 · 403 阅读 · 0 评论 -
Optional,联合转交叉,GetOptional,泛型参数,泛型函数,联合/交叉,MyPick,手写ReadOnly、深度的DeepReadOnly
【代码】手写一个Optional。原创 2024-01-24 15:14:54 · 592 阅读 · 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 · 357 阅读 · 0 评论 -
ReturnType, Parameters
是一个内置的类型操作符,它用于提取函数类型的返回值类型。当你需要基于一个函数类型来定义另一个类型时,这个工具类非常有用。通过这种方式,你可以根据函数的实际返回类型创建新的类型,并且在处理包含泛型的函数时具有很好的灵活性和可读性。在TypeScript中,原创 2024-01-23 11:38:33 · 712 阅读 · 0 评论 -
infer学习
关键字用于在类型推断上下文中捕获泛型中的类型。它主要用于在定义条件类型或者创建复杂的类型映射时,从已知类型中派生出未知类型。类型中被用来表示数组元素的具体类型,并且通过类型守卫检查和条件类型来提取出来。TypeScript 中的。所代表的函数的返回类型。以下是一个简单的使用。原创 2024-01-15 18:00:15 · 520 阅读 · 0 评论 -
type和interface的区别
在设计项目时,可以根据需要选择合适的类型定义方式。在最新的 TypeScript 版本中,很多原本只能通过。可以互换使用,尤其是在描述对象结构的时候。但在需要声明合并、映射类型等特性时,必须使用。上使用,两者之间的差异在减少。TypeScript 中的。总的来说,在大多数情况下,实现的功能也逐渐能在。原创 2024-01-10 13:44:09 · 640 阅读 · 0 评论 -
infer。。。。
关键字用于从表达式中推断类型。它通常与条件类型(conditional types)一起使用,在条件类型的分支中可以推断出一个新的类型。条件类型,它接受一个函数类型作为参数,并根据函数的返回类型来推断一个新的类型。下面是一个示例,展示了如何在 TypeScript 中使用。,然后将其作为条件类型的返回结果。希望这个示例能帮助你理解如何使用。在上面的示例中,我们定义了一个。函数的类型中推断出返回类型是。在 TypeScript 中,,我们将返回类型赋值给。原创 2024-01-09 15:52:07 · 583 阅读 · 0 评论 -
tsDom类型和鼠标事件
typescript中常规的dom元素和event事件类型声明-tech99 知识搜索引擎原创 2024-01-03 14:10:52 · 461 阅读 · 0 评论 -
Ref和类型断言
以上代码示例展示了类型断言在不同场景中的应用。请注意,虽然类型断言可以帮助你更精确地控制类型,但过度使用或错误使用类型断言可能会导致类型错误或降低代码的可维护性。因此,在使用类型断言时应谨慎并确保其正确性。原创 2023-12-26 01:52:30 · 1305 阅读 · 0 评论 -
字符串数组和number数组,Promise类型
定义字符串数组和number数组。原创 2023-12-21 13:59:35 · 431 阅读 · 0 评论 -
ts+map函数
函数的基本用法与 JavaScript 类似,但是您可以使用类型注解来明确函数的输入和输出类型。以下是一个 TypeScript 中使用。在 TypeScript 中,使用。原创 2023-12-06 16:11:22 · 919 阅读 · 0 评论 -
非空断言(!.)
非空断言是一种有用的工具,但在使用时需要谨慎。在某些情况下,通过编写更严格的类型声明或者进行条件检查可能更为安全。需要注意的是,在使用非空断言时,你必须确保你的断言是安全的。如果你在运行时对可能为。,那么 TypeScript 不会提供警告,这可能导致运行时错误。符号实现的,用于告诉 TypeScript 编译器某个值不为。非空断言是一种告诉编译器“我知道这个值不会为。在 TypeScript 中,非空断言是通过。的值使用非空断言,并且这个值确实为。或 `undefined”的方式。原创 2023-11-30 17:29:31 · 368 阅读 · 0 评论 -
类型断言,
类型断言在编译时起作用,不会在运行时进行实际的类型转换。如果断言的类型不正确,编译器不会报错,但在运行时可能会导致错误。当你使用类型断言时,你需要确保你知道实际的类型,否则可能会导致运行时错误。在使用类型断言之前,最好尽量避免不确定的类型。在 TypeScript 中,类型断言是一种告诉编译器某个值的具体类型的方式。用于处理一些特殊情况,但在平时的代码中应该慎用,尽量依赖 TypeScript 的类型推断。总的来说,类型断言是 TypeScript 中一种灵活的机制,是类型断言的关键词,同样用于将。原创 2023-11-30 17:22:49 · 107 阅读 · 0 评论 -
ts中的is
这里的implements 相当于interface的实例化,它的内容不仅限于方法,还可以对值示例化。类似于new class的用法。原创 2023-11-28 09:22:16 · 288 阅读 · 0 评论 -
keyof
/ 报错,因为'Person'类型中没有'middleName'属性。// 那么,`keyof Person`将会返回`"firstName" | "lastName" | "age"`的联合类型,// 在这个例子中,`getProperty`函数接受一个对象和一个属性名,并返回那个属性的值。// 它允许你从一个类型中提取所有的可枚举属性名,并将它们组成一个联合类型。// 但是,如果传递的属性名不在指定的对象类型中,则会抛出错误。// 在TypeScript中,`keyof`是一个操作符,原创 2023-11-27 02:34:01 · 564 阅读 · 0 评论 -
v3结合ts积累
【代码】v3结合ts积累。原创 2023-11-24 10:35:07 · 69 阅读 · 0 评论