首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Typescript 中,这些类型工具真好用

例如,要获取函数返回的类型,我们可以使用 ReturnType: import { getContent } from '@example' const content = await getContent...为此,我们可以使用NonNullable 类型工具,从联合类型中排除空值或未定义值: type ContentKind = NonNullable[0]> // ContentKind 现在我们的 ContentKind 类型与这个包中没有导出的 ContentKind 完全匹配,我们可以在 processContent 函数中使用它了: import...React 中使用工具类型 工具类型也可以在 React 组件方面给我们很大的帮助。...或者,如果我们只希望某些键被允许包含在我们的 updateEvent 函数中,我们可以使用 Pick 类型工具来指定允许的键: function updateEvent(newEvent: Pick<Event

21630

TypeScript高级类型备忘录(附示例)

联合类型 联合类型表示一个值可以是几种类型之一,例如某个函数希望传入 string 或者 number 类型的参数。...在这里,我使用 T(名称自定义),然后使用不同的类型两次调用 showType 函数。...由于它是可重用的,因此可以首先使用字符串,然后使用数字来调用它。...这里,我们使用 Readonly 来使 ReadonlyType 的属性变成只读属性。如果你尝试为这些字段赋值,则会引发错误。 除此之外,还可以在属性前面使用关键字 readonly 使其只读。...就是说,如果我们在函数 showType() 中使用它,则接收到的参数必须是字符串,否则,TypeScript 将报错。 类型保护 类型保护使你可以使用运算符检查变量或对象的类型。

88920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript进阶(三)类型演算与高级内置类型

    例如,我们可以使用联合类型来定义一个变量可以接受多种不同类型的值:let x: number | string;这样,变量 x 可以接受 number 类型或 string 类型的值。...TypeScript 中一种用于缩小类型范围的机制。...通过使用类型守卫,我们可以在特定条件下判断一个值的类型,并在代码块中使用该类型。...在 TypeScript 中,typeof 操作符也可以用于获取一个值的类型,并将其作为一个类型注解或类型声明使用。...in 关键字in 是 TypeScript 中的一个关键字,用于遍历一个联合类型中所有成员。通过 in 关键字,我们可以在编译时对联合类型进行遍历,并将其作为一个类型注解或类型声明使用。

    30810

    一份TypeScript高级类型入门手册,附大量代码实例,值得收藏

    是一个联合类型函数,它接受字符串或者数字作为参数。...T帮助我们捕获用户传入的参数的类型(比如:number/string)之后我们就可以使用这个类型 我们把 showType 函数叫做泛型函数,因为它可以适用于多个类型 泛型接口 interface GenericType...T, 并通过类型 T来约束接口内 name 的类型 注:泛型变量约束了整个接口后,在实现的时候,必须指定一个类型 因此在使用时我们可以将name设置为任意类型的值,示例中为字符串或数字 多参数的泛型类型...除此之外,你还可以在指定的属性前面使用关键字readonly使其无法被重新赋值 interface ReadonlyType { readonly id: number; name: string...,它需要两个参数 T是要从中选择元素的类型 K是要选择的属性(可以使使用联合类型来选择多个字段) Omit Omit Omit的作用与Pick类型正好相反。

    1.5K30

    一份TypeScript高级类型入门手册,附大量代码实例,值得收藏

    是一个联合类型函数,它接受字符串或者数字作为参数。...T帮助我们捕获用户传入的参数的类型(比如:number/string)之后我们就可以使用这个类型 我们把 showType 函数叫做泛型函数,因为它可以适用于多个类型 泛型接口 interface GenericType...T, 并通过类型 T来约束接口内 name 的类型 注:泛型变量约束了整个接口后,在实现的时候,必须指定一个类型 因此在使用时我们可以将name设置为任意类型的值,示例中为字符串或数字 多参数的泛型类型...除此之外,你还可以在指定的属性前面使用关键字readonly使其无法被重新赋值 interface ReadonlyType { readonly id: number; name: string...,它需要两个参数 T是要从中选择元素的类型 K是要选择的属性(可以使使用联合类型来选择多个字段) Omit Omit Omit的作用与Pick类型正好相反。

    1.5K40

    一份TypeScript高级类型入门手册,附大量代码实例,值得收藏

    是一个联合类型函数,它接受字符串或者数字作为参数。...T帮助我们捕获用户传入的参数的类型(比如:number/string)之后我们就可以使用这个类型 我们把 showType 函数叫做泛型函数,因为它可以适用于多个类型 泛型接口 interface GenericType...T, 并通过类型 T来约束接口内 name 的类型 注:泛型变量约束了整个接口后,在实现的时候,必须指定一个类型 因此在使用时我们可以将name设置为任意类型的值,示例中为字符串或数字 多参数的泛型类型...除此之外,你还可以在指定的属性前面使用关键字readonly使其无法被重新赋值 interface ReadonlyType { readonly id: number; name: string...,它需要两个参数 T是要从中选择元素的类型 K是要选择的属性(可以使使用联合类型来选择多个字段) Omit Omit Omit的作用与Pick类型正好相反。

    96020

    这 5 个 TypeScript 的功能特征,你需要熟悉下

    1、Unions 联合是最基本且易于使用的 TypeScript 功能之一。它们让我们可以轻松地将多种类型合二为一。交集和联合类型是我们组合类型的方法之一。...5、类型保护 类型保护是一组帮助我们缩小对象类型的工具。这意味着我们可以从更一般的类型转到更具体的类型。 有多种技术可以执行类型保护。在本文中,我们将只关注用户定义的类型保护。...这些基本上是断言——就像任何给定类型的函数一样。 我们如何使用它们?我们只需要定义一个函数,它的返回类型是一个类型谓词,它返回true/false。...该断言函数将成为我们的类型保护。 类型保护是有作用域的。在 isHunter(x) 代码块中,x 变量的类型为 Hunter。这意味着我们可以安全地调用它的hunt 方法。...然而,在这个代码块之外,x 类型仍然是未知的。 最后的想法 在本文中,我们只是探讨了我们可以使用的最重要的 Typescript 功能。由于这只是一个概述,我们只是触及了它们的表面。

    1.3K40

    typescript基础笔记

    、调用属性、当作函数: let a: unknown; a.toString();//err a();//err let b = a + 1;//err unknow使用的时候要把类型具体化,缩小使用范围...、调用属性、当作函数, 使用的时候类型要具体化,缩小使用范围,这样就可以避免any的那些不安全的副作用。...void void类型只是当作函数的没有返回值的时候使用,表示没有任何类型。函数不加void类型, 默认返回void,所以如果函数没有返回值的时候void加不加感觉都可以。...类型别名type 类型别名也可以用来描述对象和函数,还可以描述原始类型、元组、联合类型等。语法上面类型别名是=。...这样用户就可以以自己的数据类型来使用组件。在定义类型的时候还不能确定是什么类型,在使用的时候才能确定类型。根据传入的类型决定类型。

    74630

    【译】JavaScript和TypeScript中的Boolean

    若想获取任意类型值的布尔值,可以通过使用 Boolean 函数: Boolean(false) // false Boolean(true) // true Boolean("false") // true...配合使用 Number 函数——一个可以将所有类型值转换为对应数值或 NaN,来快速获取集合中的数值是非常棒的方法。...虽然,通过引用 Boolean 对象作为类型也可以正常运行,但这是错误的使用方式,我们几乎很少需要使用到通过 new Boolean 方式创建的对象。...这样,我们也可用联合类型来自定义 TypeScript 中的 boolean 类型。...思考一下,如何在函数中处理一个可能存在差异的数据。譬如,我们可以在以下校验用户ID的函数中,给用户ID设置一个标记,然后,在调用时就必须提供对应标志。

    2.4K20

    白话typescript中的【extends】和【infer】(含vue3的UnwrapRef)

    result(1) : result(2),用大白话可以表示为: 如果T包含的类型 是 U包含的类型的 '子集',那么取结果X,否则取结果Y。...infer 在extends语句中,还支持infer关键字,可以推断一个类型变量,高效的对类型进行模式匹配。但是,这个类型变量只能在true的分支中使用。...获取到的函数返回值,否则返回boolean类型 type Func = T extends () => infer R ?...,返回不同类型的联合类型 type Obj = T extends {a: infer VType, b: infer VType} ?...总结 ts提供的extends和infer大大增加了类型判断的灵活性和复用性,虽然用与不用都可以,但能熟练地使用高级特性将大大提升ts推断的效率和代码类型的可读性。 如有问题,欢迎指出。 劳动节快乐!

    27110

    TypeScript中的高级类型工具类型及关键字

    本文主要帮助理解 TypeScript 中的高级类型及工具类型。在实际使用 TypeScript 的开发过程中,得益于这些高级类型于工具类型,我们可以更方便的构建出我们需要的类型。...一、高级类型 泛型 泛型可以理解为一个变量,这个变量的值是一个类型。和函数的参数一样。...它通常配合一组尖括号进行声明使用: // 一个带有 name 属性的类型 type Cup = { name: string; }; // 声明一个接收三个参数的函数, // 第一个参数是必须拥有name...addAttr({ name: 'mgdi' }, 'age', 18); 联合类型 联合类型是指将多个类型结合,使用 | 符号进行连接。...20, // height: 10 } 字面量类型 字面量类型与联合类型很像,不同之处在于,联合类型用 | 分割的是类型,而字面量类型分割的是值。

    2.1K30

    TypeScript 高级类型总结(含代码案例)

    TypeScript 是一种类型化的语言,允许你指定变量、函数参数、返回的值和对象属性的类型。 以下是 TypeScript 高级类型的使用方法总结,而且带有例子。...在下面的代码中,我用的是 T(这个名称随你决定)这个名字,然后使用不同的类型注释调用了两次 showType 函数,因为它是可以重用的。...由于它是可重用的,因此我们可以用字符串和数字来调用它。...除此之外,还可以在属性前面使用关键字“ readonly”,以使其无法重新分配。...也就是说,如果在函数 showType() 中使用它,那么接收到的参数必须是字符串,否则 TypeScript 将会报错。 类型保护 类型保护使你可以用运算符检查变量或对象的类型。

    1.3K10

    编写TypeScript工具类型,你需要知道的知识

    再定义一个接口,为成员都加上可选修饰符吗?这种方法确实可行,但接口里有几十个成员呢?此时,工具类型就可以派上用场。 type Partial = {[K in keyof T]?...语法: typeA | typeB ,联合类型是包含多种类型的类型,被绑定联合类型的成员只需满足其中一种类型。...name: 'Jeo', age: 20 } let name = person['name'] // 'Jeo' type str = Person['name'] // string 我们可以在普通的上下文里使用...“"unknown"”的参数不能赋给类型“"name" | "age"”的参数 K 不仅可以传成员,成员的字符串联合类型也是有效的 type Union = Person[keyof Person] /...你可以把这过程理解为 JavaScript 中数组的 map 方法,在原本的基础上扩展元素( TypeScript 中指类型),当然这种理解过程可能有点粗糙。

    1.4K50

    分享 30 道 TypeScript 相关面的面试题

    例如,如果我们经常处理用户数据,我们可以定义一次用户类型或接口,然后在整个代码库中使用它,而不是在函数或类中重复定义用户的形状。 04、工会类型有哪些?它们有何益处?...这确保了功能的灵活性,同时,仍然保持类型安全。 05、Type Guards 如何增强 TypeScript 的功能? 答案:类型保护是运行时检查,有助于缩小条件块中变量的类型范围。...当一个对象可以有多个形状但共享一个公共属性(通常是文字类型)时,可以使用它们,该属性可用于缩小其确切形状。...24、TypeScript 中方法重载和函数重载有什么区别? 答案:TypeScript 支持函数重载,即为单个函数声明多个函数类型。然后,编译器将根据函数调用的参数使用适当的类型。...上下文输入等功能有助于函数表达式等场景。 27、什么是类型防护,如何创建自定义类型防护? 答案:类型保护是执行运行时检查并缩小条件块内类型范围的表达式。

    1K30
    领券