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

TypeScript Exclude<UnionOfTypes,UnionOfTypes>类型为“never”

TypeScript中的Exclude<UnionOfTypes, UnionOfTypes>类型为"never"的含义是,当我们将一个类型联合(Union)的所有成员作为第一个参数传递给Exclude类型时,返回的结果类型将会是"never"。

具体来说,Exclude类型是TypeScript标准库中的一个工具类型,用于从一个类型中排除另一个类型。它接受两个参数,第一个参数是一个类型联合,第二个参数是要排除的类型。

在这个特定的问题中,UnionOfTypes表示一个类型联合,它包含多个类型。当我们将UnionOfTypes作为第一个参数传递给Exclude类型时,由于Exclude的定义是排除第二个参数中的类型,而UnionOfTypes恰好包含了所有要排除的类型,因此结果类型将会是"never"。

"never"类型在TypeScript中表示一个不可能发生的类型,即不存在的类型。它通常用于表示无效的或不可达的代码路径。在这种情况下,由于我们排除了所有的类型,因此结果类型为"never",表示不存在任何有效的类型。

需要注意的是,这里的问题并没有提供具体的UnionOfTypes的定义,因此无法给出更具体的答案。如果提供了UnionOfTypes的定义,我们可以根据具体的类型来解释和推断结果。

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

相关·内容

TypeScript-never和object类型类型断言概述

前言TypeScript 中的 "never" 类型表示一个永远不会发生正常结束的函数返回值类型,通常在异常处理或无限循环中使用。这有助于标识代码中的潜在问题和错误流程。"...never" 用于处理异常情况,而 "object" 用于通用的对象表示。正确使用它们有助于提高代码的可读性和类型安全性。...Never 类型表示的是那些永不存在的值的类型一般用于抛出异常或根本不可能有返回值的函数抛出异常function demo(): never { throw new Error("报错了");}demo...();不可能有返回值的函数function demo(): never { while (true) { }}demo();Object 类型表示一个对象let obj: object;//...会报错// obj = 123;obj = {name: "BNTang", age: 18};console.log(obj);类型断言概述TS 中的类型断言和其它编程语言的 类型转换 很像,可以将一种类型强制转换成另外一种类型类型断言就是告诉编译器

22120

TypeScript 演化史 — 第三章】标记联合类型never 类型

never 类型 TypeScript 2.0 引入了一个新原始类型 nevernever 类型表示值的类型从不出现。...不可能有该类型的变量 另一种情况是,never 类型被推断从不为 ture。在下面的示例中,我们检查 value 参数是否同时是字符串和数字,这是不可能的。...在这种情况下,TypeScript 推断出 never 类型,因为咱们已经将 value 参数注解类型 string | number,也就是说,除了string 或 number, value 参数不可能有其他类型...never 和 void 之间的区别 你可能会问,为什么 TypeScript 已经有一个 void 类型为啥还需要 never 类型。...这样的函数在 TypeScript 中被推断有一个 void 返回类型。 具有 never 返回类型的函数永不返回。它也不返回 undefined。

1K20

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

下面是一个在 TypeScript 的lib.es5.d.ts类型定义文件中预定义的有条件类型的例子 /** * Exclude null and undefined from T */ type...never : T; 如果类型T可赋值给类型null或类型undefined,则NonNullable类型never类型;否则它将保留类型 T。...never类型TypeScript 的底层类型,表示从未出现的值的类型。 分布式有条件类型 那么,为什么e 条件类型never类型的组合是有用的呢?它有效地允许咱们从联合类型中删除组成类型。...TypeScript 通过逐个查找每个类型并创建联合类型来解决这个问题: type NonNullableUserPropertyKeys = | { name: "name"; email: never...预定义的有条件类型 TypeScript 2.8 在lib.d.ts里增加了一些预定义的有条件类型Exclude -- 从T中剔除可以赋值给U的类型

2.5K20

TypeScript-Exclude

TypeScript 中,Exclude 是一个高级类型,属于“类型实用工具”(type utilities)。Exclude 类型用于从联合类型中排除某些类型,只留下不在排除列表中的类型。...基本语法 Exclude 类型的语法如下: type Exclude = T extends U ? never : T; 这里,T 是要操作的类型,U 是要排除的类型。...如果 T 可以赋值给 U,则结果 never;否则,结果 T。 使用场景 1....注意事项 • Exclude 只能用于联合类型和基本类型之间的操作。如果尝试排除复杂类型(如类类型或接口类型),TypeScript 将报错。...• Exclude 是一个有条件的类型,这意味着它的结果取决于类型检查的结果。如果 T 可以赋值给 U,则结果 never;否则,结果 T。

10810

TypeScript 类型体操:提取对象指定 key 并设置必填

今天我们来做一道 TypeScript 类型编程题。 我们需要实现一个 RequiredPick 类,从一个对象类型中提取指定的 key 生成新的对象类型,并将它的所有 key 设置必填。...Pick 我们容易想到 Pick 的实现,Pick 是 TypeScript 内置的一个高级类型。这个类型的实现在我以前的文章《类型体操:探究 TypeScript 内置高级类型》有讲解过。...T 和 K,K 必须 T 对象的 key 组成的联合类型的子类型。...{ [P in K]: T[P]; } 是对类型进行 重映射,这里的 P in K 表示遍历 K(K 是遍历类型),然后作为重映射类型的新 key,并且将 T[P] 作为值。...然后打个广告,前端大佬神光的 TypeScript 体操教材,如果你想入门的话,这个挺适合,也不贵。

2.9K10

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

附 中文文档,有人做了专门的读书笔记 Typescript学习记录:高级类型 TypeScript: Built-in generic types:推荐,用案例详细解释高阶类型的使用; TS 一些工具泛型的使用及其实现...:TS 内置工具泛型高阶使用 TypeScript 2.1 新特性一览:查找/映射类型及 any 类型的推断 都是在 2.1 版本引入的 TypeScript 2.8:Exclude 等条件类型是在 2.8...3.1、Exclude(官方) 某些地方也称为 Diff 作用:从 T 中剔除可以赋值给 U 的类型,换言之就是从T 中排除 U 源码: type Exclude = T extends...never : T; 解释: 在 ts 2.8 中引入了一个条件类型, T extends U ?...X : Y) 示例: type T = Exclude // -> 2 参考文档: Add support for literal type subtraction TypeScript

1.3K10

实现TypeScript中的互斥类型

此时,你会怎么用TypeScript来定义这个类型?本文将带大家实现一个互斥类型来解决这个问题,欢迎各位感兴趣的开发者阅读本文。 前置知识 在实现之前,我们需要先来了解几个基础的知识。...: string }; never类型TypeScript中它有一个特殊的类型never,它是所有类型的子类型,无法再进行细分,也就意味着除了其本身没有类型可以再分配给它。...TS中提供了一个名为Exclude的函数,它可以用来做这件事,接受两个参数: UnionType 联合类型 ExcludedMembers 需要进行剔除的属性 使用方法如下所示: type P = Exclude...实现代码 接下来,我们来看下代码的实现,如下所示: // 定义排除类型:将U从T中剔除, keyof 会取出T与U的所有键, 限定P的取值范围T中的所有键, 并将其类型设为never type Without... = { [P in Exclude]?

3.1K40

TS 从 0 到 1 - 泛型进阶

# 确保属性存在 有时,希望类型变量对应的类型上存在某些属性,除非显式地将特定属性定义类型变量,否自编译器不会知道这些属性是否存在。...如,never 类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头表达式的返回值类型。 没有类型never 的子类型或可以赋值给 never 类型(除了 never 本身)。...", completed: false, }; # Exclude Exclude 用于将某个类型中属于另一个的类型移除掉。...定义 // 如果 T 能赋值给 U,那么就会返回 never 类型,否则返回 T 类型 // 最终实现的效果就是将 T 中某些属于 U 的类型移除掉 type Exclude = T extends...never : T; 示例 type T0 = Exclude; // "b" | "c" type T1 = Exclude<"a" | "b" | "

71420

TypeScript 参数简化实战(进阶知识点conditional types,中高级必会)

Lion | never | Tiger | never 复制代码 然后,联合类型中的never没什么意义,所以最后的结果的出来了: type Cat = Lion | Tiger 复制代码 记住这样的计算过程...,当TS识别到typeLOG_IN的时候,它会要求你在参数中传入emailAddress这个参数,这样才能完全满足联合类型中的其中一项。...// 把类型中key"type"去掉 type ExcludeTypeField = { [K in Exclude]: A[K] } 复制代码 这里利用了keyof...语法,并且利用内置类型Exclude把type这个key去掉,因此只会留下额外的参数。...A : never 复制代码 现在,如果ExcludeTypeField 空,则extends表达式true,否则为false。 但这仍然行不通!

70510

类型体操:探究 TypeScript 内置高级类型

每增加一种类型都要写多了一个 type 别名 const getStrFirst: getStrItem = (a) => { return a[0]; } 解决这个问题,TypeScript...总结一下,从类型能力上的增强的过程来说,就是: 基本类型 -> 泛型 -> 类型编程(类型体操) TypeScript 内置高级类型 TS 代码版本 4.8.2 下面我们来看一下 TypeScript...Exclude Exclude 的作用是,从联合类型中剔除掉一些类型。...回到我们的 Exclude,逻辑就很清楚了,就是判断 T 是否 U 的子类,如果是的话,返回 never(效果是被丢弃);否则返回 T。...所以真正逻辑是, "a" | "b" | "c" 被打散,变成依次判断 "a" 、"b"、"c" 是否 "b" 的子类,分别得到 "a" 、never、"c",然后联合起来,就变成了 "a" |

81210
领券