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

使用类型而不是键的Typescript Pick<>

Typescript中的Pick<>是一个类型工具,用于从给定类型中选择指定的属性,并创建一个新的类型。它接受两个参数,第一个参数是源类型,第二个参数是要选择的属性。

Pick<>的语法如下:

代码语言:txt
复制
type NewType = Pick<SourceType, 'property1' | 'property2' | ...>;

其中,SourceType是源类型,property1property2等是要选择的属性。

Pick<>的作用是在编译时创建一个新的类型,该类型只包含源类型中指定的属性。这在需要从一个大型复杂类型中选择部分属性时非常有用。

下面是Pick<>的一些特点和应用场景:

  1. 特点
    • 创建一个新的类型,只包含源类型中指定的属性。
    • 保留了属性的类型信息,即新类型中的属性类型与源类型中的属性类型相同。
  • 应用场景
    • 选择源类型中的部分属性,以创建一个更小、更简单的类型。
    • 在函数参数中使用Pick<>来限制接受的参数类型。
    • 在对象的转换或映射过程中,只选择需要的属性。

以下是一个示例,展示了如何使用Pick<>选择一个类型的部分属性:

代码语言:txt
复制
interface Person {
  name: string;
  age: number;
  address: string;
  email: string;
}

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

const personInfo: PersonInfo = {
  name: 'John',
  age: 25,
};

console.log(personInfo); // Output: { name: 'John', age: 25 }

在上面的示例中,我们定义了一个Person接口,它具有nameageaddressemail属性。然后,我们使用Pick<>Person接口中选择了nameage属性,创建了一个新的类型PersonInfo。最后,我们创建了一个personInfo对象,只包含nameage属性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动推送服务(TPNS):https://cloud.tencent.com/product/tpns
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TypeScript: 类型判断-合理使用 is 和 type

TypeScript: Type predicates TypeScript 类型判断--合理使用 is 和 type 这篇文章主要写在使用函数时候确保你参数类型正确规范建议。...写在最前面 最开始写 typescript 最困难就是各种类型判断,最近浏览 jsFeed 时候看到一篇不错文章,然后自己翻译了一下分享给大家。...typescript 类型断言帮助你更好规范你代码类型类型断言一般在函数中使用(work on functions),来确保你函数类型返回正确。...: 使用 is ,这里让我们主动明确告诉 ts ,在 isString() 这个函数参数是一个 string。...虽然is 让 ts 分辨了 unknown 类型和 更多其他类型,但是也让我们类型缩小了范围。为什么啦? 来看一个栗子:让我们来做一个丢色子游戏,当你丢到 6 时候你就赢了。

8K20

git pull 代码时候默认使用 rebase 不是 merge

一般 merge 情况下会产生一个新提交名字为 Merge branch ****,如下图所示: 这个新提交会导致提交记录中产生多余提交信息,实际与解决问题相关提交不符而且对于一些洁癖来说这种难以接受...,所以 git 提供了一个 rebase 方式来替代 merge,rebase 可以按顺序结构重新整合提交顺序不是产生一个新提交。...具体区别大家可到网络上搜索一下这里重点不是介绍他们两个区别。...如果你希望每次拉代码时候不需要执行 git fetch 后再执行一次 git rebase,而是像以前一样直接执行 git pull 而是使用 rebase 来合并代码的话,那以下命令可以帮到你。...git config --global pull.rebase true 执行次命令后,每次 git pull 都将是一个 git fetch + git rebase 过程了,不是以前那种方式。

41320

git pull 代码时候默认使用 rebase 不是 merge

一般 merge 情况下会产生一个新提交名字为 Merge branch ****,如下图所示: 这个新提交会导致提交记录中产生多余提交信息,实际与解决问题相关提交不符而且对于一些洁癖来说这种难以接受...,所以 git 提供了一个 rebase 方式来替代 merge,rebase 可以按顺序结构重新整合提交顺序不是产生一个新提交。...具体区别大家可到网络上搜索一下这里重点不是介绍他们两个区别。...如果你希望每次拉代码时候不需要执行 git fetch 后再执行一次 git rebase,而是像以前一样直接执行 git pull 而是使用 rebase 来合并代码的话,那以下命令可以帮到你。...git config --global pull.rebase true 执行次命令后,每次 git pull 都将是一个 git fetch + git rebase 过程了,不是以前那种方式。

46620

使用DDD来构建你REST API,不是CRUD

REST围绕着资源这个概念构建,然后用URI来表示。然后一个HTTP动词和资源URI组合起来对指定资源进行HTTP调用来执行操作。...首先,客户端不应该调用一个API,然后就把账户余额更新为他们想要数量,这不是乱套了吗?!帐户可能有最低余额。...ok,于是你对那些更新方法添加了一些校验代码,以便如果帐户余额值被更改,它必须在一个指定范围内。这样问题解决了吗?没有。任何余额调整都应被作为某种类型交易事务被记录下来才对。比如这是充值?取钱?...我已经发现一些团队就是这样做,他们代码试图推断客户端究竟把哪些字段改变了,代码最终就是一团糟。 那有什么办法呢?就个人而言,我是领域驱动设计(DDD)(设计任何类型API)超级粉丝。...当然,并不是说你必须使用DDD来设计你REST,但是,由于REST资源可以很好地映射到DDD实体,因此我发现设计REST API特别适合使用DDD。 那么这是什么意思?

2.1K50

TypeScript 基本类型和泛型使用

typescript 基础类型 下面只介绍一些区别于 JavaScript 特殊类型 Tuple 元组 元组类型允许表示一个已知元素数量和类型数组,各元素类型不必相同。...和 void相似,它们本身类型用处不是很大: // Not much else we can assign to these variables!...infiniteLoop(): never { while (true) { } } 复制代码 typescript 泛型 先来谈谈使用场景 模拟一个场景,当我们要使用一个服务器提供不同数据...正解: 使用 typescript 泛型(Generic) 先简单来说一下什么是泛型? ==就是表示一个类型变量,用他来代替某个实际类型用于编程。...如果你使用 vscode 的话,我们默认你已经安装支持 typescript 环境。

2.5K40

为什么使用OPA不是原生Pod安全策略?

使用OPA,你还可以对pods施加类似的控制,在本实验室中,我们将创建一个OPA策略,不允许在pods中创建有特权容器。特权容器对主机访问级别比非特权容器高。 ?...为什么使用OPA不是原生Pod安全策略? 使用Pod安全策略来执行我们安全策略并没有什么问题。然而,根据定义,PSP只能应用于pods。...相应地,你可以有一个统一OPA策略,适用于系统不同组件,不仅仅是pods。例如,有一种策略,强制用户在其服务中使用公司域,并确保用户只从公司镜像存储库中提取镜像。...请注意,我们使用OPA是使用kube-mgmt部署不是OPA Gatekeeper。 Rego策略代码 在本文中,我们假设你已经熟悉了OPA和Rego语言。...因为OPA可以与其他Kubernetes资源一起工作,不仅仅是Pods,所以建议使用它来创建跨越所有相关资源集群级策略文档。

1.2K20

是否还在疑惑Vue.js中组件data为什么是函数类型不是对象类型

分析Vue.js组件中data为何是函数类型而非对象类型 引言 正文 一、Vue.js中data使用 二、data为对象类型 三、data为函数 结束语 引言 要理解本篇文章,必须具备JavaScript...一、Vue.js中data使用 我们先来回顾一下Vue使用 {{ name }} {{ age }} var vm...组件中data为对象情况 接下来我们来看一下,如果组件中data使用对象类型会发生怎么样情况。...因为我们刚开始定义了构造函数Vue时,给他内部data设置了一个值,该值为对象类型,对象类型在js中称为引用数据类型,在栈中是存储着一个指向内存中该对象堆中地址。...所以我们在使用复用型组件时,申明data属性值时,必须要使用函数类型,因为每次创建实例对象时,他们都是获取属于他们自己一个对象值,并且对应堆中地址都不相同,所以互不影响。

3.4K30

TypeScript 实用工具类型Pick 类型

TypeScript 实用工具类型Pick 类型 这是一个关于 TypeScript对象类型转换系列。...通过这种方式,我们能够使我们类型可重用,并在模块系统任何地方随时生成它们。 对象类型转换不同于使用 extends 关键字对象接口继承,特别是因为继承只能在对象接口上使用不能用于类型。...| 'username'>; TypeScript Pick 将基类型作为第一个参数,将我们想要从基类型中选取并集作为第二个参数。...这是因为 TypeScript Pick 只能用来生成类型不是接口。...当我们有更多属性可以选择更少属性可以省略则可以使用 Omit(与 Pick 相反工具类型)。我们将在下一篇文章中讨论它。

77920

使用 TypeScript 开发 React Hooks

Partial : T 类型所有任意子集 Omit : 除 x 之外 T 类型所有 Pick : 从 T 类型中明确拾取 x, y, z...Pick 是另一种不用声明新接口就能随时定义新类型方式。...我并不是懒得为了声明个新接口懒得多写两行 -- 需要精确描述领域内命名时,我会使用接口;而出于保证本地代码正确性、降噪目的,我就使用这些 TS 工具语法。...通过 自然而然地 将 reducer 函数定义在组件之外,代码可以被分割成多个独立函数,不是都集中在一个类中并共同围绕着其内部状态。...加上 TypeScript 后,你仍可以用 keyof 访问对象所有,也能使用类型联合创建出晦涩难搞某些东西 -- 怕了怕了。

2K10

TS 这7个方法,你需要知道

我们不需要为每个函数写一个类型只需要用泛型做一次。这不仅节省了我们精力,而且还使我们代码更加简洁,更不容易出错。...实用类型 TypeScript 原生提供了几个有用实用类型来帮助我们进行一些常见类型转换。这些实用类型是全局可用,它们都使用了泛型。 下面这7个是我经常用到。 1....Pick Pick会从 Type 中挑选属性集 Keys 来创建一个新类型,Keys 可以是一个字符串字面或字符串字面的联合。...Keys 值必须是 Type ,否则TypeScript编译器会抱怨。当你想通过从有很多属性对象中挑选某些属性来创建更轻对象时,这个实用类型特别有用。...Omit Omit与Pick相反。 Keys 不是说要保留哪些属性,而是指要省略属性集。 当我们只想从对象中删除某些属性并保留其他属性时,这个会更有用。

56010

深入理解 TypeScript Keyof 运算符,让你代码更安全、更灵活!

使用 KeyOf 运算符创建联合类型TypeScript 中,当我们在具有显式对象类型使用 keyof 运算符时,它会创建一个联合类型。...我们使用 OptionsFlags 来定义新类型 Features。通过条件映射,Features 类型方法保持不变,字符串属性被映射为 boolean 类型。...Record 类型 Record 是 TypeScript 提供实用类型,用于将所有属性映射到指定类型 T。...通过使用 TypeScript 实用类型,如 Record 和 Pick,我们可以轻松地重构和简化类型定义。结合 keyof 运算符,我们可以确保类型灵活性和安全性。...当我们将 keyof 与 TypeScript 其他工具结合使用时,可以提供良好类型约束,从而提升代码类型安全性。 keyof 类型注解用于提取对象

6010

TypeScript 联合类型定义、使用场景和注意事项

本文将详细介绍 TypeScript 联合类型定义、使用场景和注意事项,并提供一些示例来帮助理解。定义联合类型TypeScript 中,可以使用 | 符号将多个类型组合成一个联合类型。...使用联合类型类型断言当我们使用联合类型变量时,有时候需要告诉 TypeScript 具体类型,以便进行相应操作。可以使用类型断言(Type Assertion)来实现。...类型保护TypeScript 提供了一些机制来帮助我们在使用联合类型时进行类型保护,以减少可能出现错误。以下是几种常见类型保护方法:类型判断使用 typeof 操作符可以判断一个变量类型。...交叉类型与联合类型结合在 TypeScript 中,还可以使用交叉类型(Intersection Types)和联合类型结合使用,从而实现更复杂类型定义。...总结本文详细介绍了 TypeScript 联合类型定义、使用场景和注意事项,并提供了一些示例帮助理解。我们学习了如何使用类型断言和类型保护来处理联合类型变量,以及如何结合交叉类型使用联合类型

70241

typescript 高级技巧

越来越多 package 也开始使用 ts,学习 ts 已是势在必行。 以下是我在工作中总结到比较实用 typescript 技巧。...01 keyof keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 。...这时可以使用 keyof 来加强 get 函数类型功能,有兴趣同学可以看看 _.get type 标记以及实现 function get<T extends object, K extends...const enum 维护常量表 相比使用字面量对象维护常量,const enum 可以提供更安全类型检查 // 使用 object 维护常量 const enum TODO_STATUS {...Command 使用 VS Code 有时会出现,使用 tsc 编译时产生问题与 vs code 提示问题不一致 找到项目右下角 Typescript 字样,右侧显示它版本号,可以点击选择 Use

1.2K40

typescript 高级技巧

越来越多 package 也开始使用 ts,学习 ts 已是势在必行。 以下是我在工作中总结到比较实用 typescript 技巧。...01 keyof keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 。...string) { return o[name]} 我们刚开始可能会这么写,不过它有很多缺点 无法确认返回类型:这将损失 ts 最大类型校验功能 无法对 key 做约束:可能会犯拼写错误问题 这时可以使用... 这几个类型已内置在 Typescript 中 03 Condition Type 类似于 js 中 ?...Command 使用 VS Code 有时会出现,使用 tsc 编译时产生问题与 vs code 提示问题不一致 找到项目右下角 Typescript 字样,右侧显示它版本号,可以点击选择

1.1K20

typescript进阶 常见typescript高级技巧

01 keyof keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 。...这时可以使用 keyof 来加强 get 函数类型功能,有兴趣同学可以看看 _.get type 标记以及实现 function get(o: T, name: K): T[K] { return...o[name] } 02 Partial & Pick 既然了解了 keyof,可以使用它对属性做一些扩展, 如实现 Partial 和 PickPick 一般用在 _.pick 中 type Partial...const enum 维护常量表 相比使用字面量对象维护常量,const enum 可以提供更安全类型检查 // 使用 object 维护常量 const enum TODO_STATUS { TODO...Command 使用 VS Code 有时会出现,使用 tsc 编译时产生问题与 vs code 提示问题不一致 找到项目右下角 Typescript 字样,右侧显示它版本号,可以点击选择 Use

1.3K30

解决easyui combobox赋值boolean类型值时,经常出现内容显示value不是textbug

版本:EasyUI 1.7.0 在用easyui写项目时,碰到一个combobox奇葩bug。...赋值,但是当我真正赋值时却出现了问题,经常出现一个bug,就是赋值完,combobox显示内容是true或者false,不是男或女,而且重现率极高。...我在测试了其他赋值情况后,发现是row.sex值存在问题。该值是boolean类型,combobox赋值boolean类型时候,会经常出现显示内容为value不是textbug。...那么问题解决起来就简单了,把boolean类型改为字符串。...修改后赋值语句如下: $('#edit_sex').combobox('setValue', String(row.sex)); 暂时不得而知bug原因。如果有人知道麻烦解答,谢谢。

1.2K30

《现代Typescript高级教程》高级类型

,Property 是 ExistingType ,TransformType 是对应属性转换类型。...Pick Pick 是一个映射类型,它从给定类型中选择一部分属性来创建新类型。...Record Record 是一个映射类型,它根据指定类型和值类型创建一个新对象类型。...infer关键字作用是告诉 TypeScript 编译器在条件类型中推断一个待定类型,并将其赋值给声明类型变量。这使得我们可以在条件类型使用这个推断出类型进行进一步类型操作。...需要注意是,infer关键字只能在条件类型右侧使用,用于声明一个待推断类型变量,不能在其他地方使用。此外,每个条件类型只能使用一次infer关键字,并且通常与泛型一起使用

18630
领券