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

带有Pick、Exclude的TypeScript & ...rest,哦我的天

TypeScript是一种由微软开发的开源编程语言,它是JavaScript的超集,添加了静态类型和其他特性,以提高代码的可读性和可维护性。TypeScript支持面向对象编程和函数式编程,并且可以在任何支持JavaScript的平台上运行。

TypeScript的优势包括:

  1. 静态类型检查:TypeScript在编译时进行静态类型检查,可以帮助开发人员在编码阶段捕获潜在的类型错误,提高代码质量和可靠性。
  2. 更好的IDE支持:由于TypeScript具有明确的类型信息,IDE可以提供更好的代码补全、导航和重构功能,提高开发效率。
  3. 渐进式采用:TypeScript可以与现有的JavaScript代码无缝集成,开发人员可以逐步将JavaScript项目迁移到TypeScript,而无需重写现有代码。
  4. 更好的可维护性:静态类型和面向对象编程的特性使得代码更易于理解、扩展和维护。

TypeScript在前端开发中广泛应用,特别是在大型项目中。它可以与流行的前端框架(如React、Angular和Vue.js)结合使用,提供更好的开发体验和代码组织。

关于"Pick"和"Exclude",它们是TypeScript中的两个类型操作符。

  1. Pick:Pick操作符用于从一个类型中选择指定的属性,创建一个新的类型。它接受两个参数,第一个参数是源类型,第二个参数是要选择的属性名。例如,假设有一个类型Person包含name、age和address属性,我们可以使用Pick操作符选择其中的name和age属性,创建一个新的类型PersonInfo:
代码语言:txt
复制
type Person = {
  name: string;
  age: number;
  address: string;
};

type PersonInfo = Pick<Person, 'name' | 'age'>;

在这个例子中,PersonInfo类型将只包含name和age属性。

  1. Exclude:Exclude操作符用于从一个类型中排除指定的属性,创建一个新的类型。它接受两个参数,第一个参数是源类型,第二个参数是要排除的属性名。例如,假设有一个类型Person包含name、age和address属性,我们可以使用Exclude操作符排除其中的address属性,创建一个新的类型PersonWithoutAddress:
代码语言:txt
复制
type Person = {
  name: string;
  age: number;
  address: string;
};

type PersonWithoutAddress = Exclude<Person, 'address'>;

在这个例子中,PersonWithoutAddress类型将不包含address属性。

腾讯云提供了云计算相关的产品和服务,包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和产品介绍链接地址可以参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

84.精读《Typescript 3.2 新特性》

1 引言 Typescript 3.2 发布了几个新特性,主要变化是类型检查更严格,对 ES6、ES7 一些时髦功能拓展了类型支持。 2 概要 下面挑一些相对重要配置介绍。...类型自动剔除 const { x, y, z, ...rest } = obj; 当我们使用了 Object rest 语法时,rest 类型其实是 obj 类型剔除了 x y z 这三个 key...下面是实现方式: interface XYZ { x: any; y: any; z: any; } type DropXYZ = Pick<T, Exclude<keyof T,...return rest; } 通过 Pick & Exclude 达到剔除 obj 属性效果,具体可以参考之前精读:精读《Typescript2.0 - 2.9》。...追踪 ISSUE 可以参考:https://github.com/Microsoft/TypeScript/issues/16 如果不清楚 Stage3 含义,可以阅读前端精读之前一篇文章:精读 TC39

33730
  • TypeScript 类型体操 - 基础操作

    TypeScript 高级类型支持类型参数,可以做各种类型运算逻辑,返回新类型,和函数调用是对应,自然也支持递归。 TypeScript 类型系统不支持循环,但支持递归。...Pick 是 ts 提供内置高级类型,就是取出某个 Key 构造新索引类型: type Pick = { [P in K]: T[P]; }; 可选意思是这个索引可能没有...,没有的时候,那 Pick 就是空,所以 {} extends Pick 就能过滤出可选索引。..., 3] as const; type arrType = typeof arr; // type arrType = readonly [1, 2, 3] 加上 as const 之后推导出来类型是带有...默认推导出来不是字面量类型,加上 as const 可以推导出字面量类型,但带有 readonly 修饰,这样模式匹配时候也得加上 readonly 才行。

    1.8K60

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

    TypeScript 是一种类型化语言,允许你指定变量、函数参数、返回值和对象属性类型。 以下是 TypeScript 高级类型使用方法总结,而且带有例子。...Intersection 类型 Intersection 类型是一种把对多种类型进行组合方法。这意味着你可以把给定多种类型合并,并得到一个带有全部属性新类型。...在下面的代码中,是 T(这个名称随你决定)这个名字,然后使用不同类型注释调用了两次 showType 函数,因为它是可以重用。...Exclude 与 Extract 不同,Exclude 通过排除已经存在于两个不同类型中属性来构造类型。它排除了所有可以分配给 U 字段。...也就是说,如果你传递可空值,TypeScript 将会引发错误。

    1.3K10

    【TS 演化史 -- 17】各文件JSX工厂 、有条件类型和映射类型修饰符

    带有类型注释文件一样,JSX 文件首先需要编译成纯 JS 文件。--jsxFactory选项告诉 TypeScript 编译器应该如何编译JSX元素。 注意 Hello World!...下面是一个在 TypeScript lib.es5.d.ts类型定义文件中预定义有条件类型例子 /** * Exclude null and undefined from T */ type...我们可以将Pick 类型用于lib.es5.d.ts中预定义类型: /** * From T, pick a set of properties * whose keys are in...类型和Pick来定义NonNullableProperties,这是咱们要查找类型: type NonNullableProperties = Pick<T, NonNullablePropertyKeys...预定义有条件类型 TypeScript 2.8 在lib.d.ts里增加了一些预定义有条件类型: Exclude -- 从T中剔除可以赋值给U类型。

    2.5K20

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

    本文主要帮助理解 TypeScript高级类型及工具类型。在实际使用 TypeScript 开发过程中,得益于这些高级类型于工具类型,我们可以更方便构建出我们需要类型。...它通常配合一组尖括号进行声明使用: // 一个带有 name 属性类型 type Cup = { name: string; }; // 声明一个接收三个参数函数, // 第一个参数是必须拥有name...PicK挑选属性,将属性 T 中其中一部分属性挑选出来 // type Pick = { [P in K]:...Exclude 去除 T 类型中于K类型包含相同属性,使用剩余属性构造一个新类型 // type Exclude = T extends U ?...type TExcludeTrain = Exclude; // naver Extract Extract 获取构造类型 T, K 中相同类型构造一个新类型 //

    2.1K30

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

    你可以把本文看做一个带有示例 TypeScript 高级类型备忘单 让我们开始吧! Intersection Types(交叉类型) 交叉类型是一种将多种类型组合为一种类型方法。...; } Pick Pick 此方法允许你从一个已存在类型 T中选择一些属性作为K, 从而创建一个新类型 即 抽取一个类型/接口中一些子集作为一个新类型 T代表要抽取对象 K有一个约束...因此,通过使用Extract,即提取出了新类型 {id:number}。 Exclude Exclude --从 T 中剔除可以赋值给 U 类型。...与Extract不同,Exclude通过排除两个不同类型中已经存在共有属性来构造新类型。它会从T中排除所有可分配给U字段。...你点赞、在看和关注是对最大支持! 点赞、在看支持作者❤️

    95420

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

    你可以把本文看做一个带有示例 TypeScript 高级类型备忘单 让我们开始吧! Intersection Types(交叉类型) 交叉类型是一种将多种类型组合为一种类型方法。...; } Pick Pick 此方法允许你从一个已存在类型 T中选择一些属性作为K, 从而创建一个新类型 即 抽取一个类型/接口中一些子集作为一个新类型 T代表要抽取对象 K有一个约束...因此,通过使用Extract,即提取出了新类型 {id:number}。 Exclude Exclude --从 T 中剔除可以赋值给 U 类型。...与Extract不同,Exclude通过排除两个不同类型中已经存在共有属性来构造新类型。它会从T中排除所有可分配给U字段。...也就是说,如果你传递可为空值,TypeScript 将引发错误。 顺便说一句,如果将--strictNullChecks标志添加到tsconfig文件,TypeScript 将应用非空性规则。

    1.5K40

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

    你可以把本文看做一个带有示例 TypeScript 高级类型备忘单 让我们开始吧! Intersection Types(交叉类型) 交叉类型是一种将多种类型组合为一种类型方法。...; } Pick Pick 此方法允许你从一个已存在类型 T中选择一些属性作为K, 从而创建一个新类型 即 抽取一个类型/接口中一些子集作为一个新类型 T代表要抽取对象 K有一个约束...因此,通过使用Extract,即提取出了新类型 {id:number}。 Exclude Exclude --从 T 中剔除可以赋值给 U 类型。...与Extract不同,Exclude通过排除两个不同类型中已经存在共有属性来构造新类型。它会从T中排除所有可分配给U字段。...也就是说,如果你传递可为空值,TypeScript 将引发错误。 顺便说一句,如果将--strictNullChecks标志添加到tsconfig文件,TypeScript 将应用非空性规则。

    1.5K30

    TypeScript在项目开发中应用实践体会

    从2020年年底时候,开始使用Typescript进行项目的开发。期间团队也开始转向Typescript。 在这期间,做过很多尝试,也阅读过一些优质文章和源码。...在这期间,查阅大多数文章都是在进行一个Typescript基础使用,开发实践这一块更是少之又少,少有的一些干货文啃起来也非常不过瘾。...独乐乐不如众乐乐,本篇文章就从开发角度来聊聊,探讨下Typescript在真实项目中开发实践心得和开发体验。 当你看完文章时,建议先思考团队是否需要Typescript。...Omit使用方法是Omit,与Pick结果是相反,如果说Pick是取出,那么Omit则是过滤效果,具体可以看下面的案例。 ?...image.png Exclude & Extract Exclude:从一个联合类型中排除掉属于另一个联合类型子集 来看下,Exclude使用形式是Exclude,如果T中属性在S不存在那么就会返回

    2.8K60

    速查手册 - TypeScript 高级类型 cheat sheet

    附 中文文档,有人做了专门读书笔记 Typescript学习记录:高级类型 TypeScript: Built-in generic types:推荐,用案例详细解释高阶类型使用; TS 一些工具泛型使用及其实现...:TS 内置工具泛型高阶使用 TypeScript 2.1 新特性一览:查找/映射类型及 any 类型推断 都是在 2.1 版本引入 TypeScript 2.8:Exclude 等条件类型是在 2.8...= pick(person, "name", "age"); // { name: string, age: number } 3、条件类型 3.1、Exclude(官方) 某些地方也称为 Diff...X : Y) 示例: type T = Exclude // -> 2 参考文档: Add support for literal type subtraction TypeScript...,多在高阶组件中使用 源码: type Omit = Pick> 示例: type Foo = Omit<{name: string, age

    1.3K10
    领券