typescript 条件类型-TypeScript 2.8 引入了条件类型

2023-08-26 0 8,724 百度已收录

最新版本的 TypeScript 2.8 包括许多主要功能和错误修复,其中最重要的是添加了条件类型,它允许开发人员根据其他类型的特征为变量选择合适的类型。

条件类型最好与形式参数结合使用。 如果框架始终重复相同的可选代码,它可能会变得很麻烦。 与 JavaScript 在运行时根据特定值做出决策类似,TypeScript 的条件类型可以根据其他类型的特征做出决策。

TypeScript 团队举了一个例子,用更灵活的套接字替换了原来冗长的 API:

原来的:

interface Id { id: number, /* other fields */ }
interface Name { name: string, /* other fields */ }
declare function createLabel(id: number): Id;
declare function createLabel(name: string): Name;
declare function createLabel(name: string | number): Id | Name;

用。。。来代替:

type IdOrName =   T extends number ? Id : Name;
declare function createLabel(idOrName: T):   T extends number ? Id : Name;

条件类型提供了infer关键字来推断类型typescript 条件类型,用于替代自动类型。 因此,TypeScript 提供了一个示例,其中他们创建了一个名为 Flatten 的类型,该类型将字段转换为他们需要的元素类型:

type Flatten = T extends any[] ? T[number] : T;

typescript 条件类型-TypeScript 2.8 引入了条件类型

如果使用infer关键字,可以将里面的代码简化为:

type Flatten = T extends Array ? U : T;

条件类型还为联合类型带来了改进,现在可以根据条件类型进行分配。

此外,TypeScript 还删除了几个新的类型别名(Exclude、Extract、InstanceType、NonNullable、ReturnType),这些别名也基于条件类型。 因此,TypeScript 团队可以更有效地将其他类型模式直接添加到语言中。

TypeScript 2.8 还删除了一个新的 --emitDeclarationOnly 标志,该标志将 TypeScript 定义文件与 JavaScript 文件分开typescript 条件类型,从而改进了使用 Babel 7 转译 TypeScript 代码的过程。

此版本还为 React 和 JSX 用户带来了有关编译注释和 JSX 模块解析的一些改进。

现在可以使用-operator 或新的Required 类型删除标识符。

其他小的改进包括:用于清理 ES 模块导出的辅助工具以及改进对未初始化类属性的检测。

总体而言,TypeScript 2.8 带来了多项改进,其中大部分都是基于新引入的条件类型,现在可以定义更复杂的类型。

您可以使用 npm install -g typescript 安装最新的 TypeScript 2.8,或直接从 GitHub 下载。 TypeScript 2.9 正在开发中,预计将于 5 月下旬发布。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 typescript typescript 条件类型-TypeScript 2.8 引入了条件类型 https://www.wkzy.net/game/161893.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务