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

TypeScript Exclude<UnionOfTypes,Interface>类型为"never“

TypeScript中的Exclude<UnionOfTypes, Interface>类型为"never"表示在给定的联合类型中排除满足指定接口的类型后,剩余的类型为空,即不存在满足指定接口的类型。

Exclude<UnionOfTypes, Interface>是TypeScript中的内置工具类型之一,用于从联合类型中排除满足指定条件的类型。它接受两个参数:UnionOfTypes表示要操作的联合类型,Interface表示要排除的接口类型。

当使用Exclude<UnionOfTypes, Interface>时,TypeScript会遍历联合类型UnionOfTypes中的每个成员类型,如果某个成员类型满足指定接口Interface,则该成员类型将被排除在结果类型之外。如果所有成员类型都满足指定接口,那么结果类型将为"never"。

这个类型的主要应用场景是在泛型中进行类型过滤或条件类型的操作。通过使用Exclude<UnionOfTypes, Interface>,我们可以排除不需要的类型,从而更精确地定义泛型的行为。

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

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

相关·内容

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 中的类型断言和其它编程语言的 类型转换 很像,可以将一种类型强制转换成另外一种类型类型断言就是告诉编译器

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

    ,咱们可以创建一个 TypeScript 接口 interface Cash { kind: "cash"; } interface PayPal { kind: "paypal", email...never 类型 TypeScript 2.0 引入了一个新原始类型 nevernever 类型表示值的类型从不出现。...在这种情况下,TypeScript 推断出 never 类型,因为咱们已经将 value 参数注解类型 string | number,也就是说,除了string 或 number, value 参数不可能有其他类型...never 和 void 之间的区别 你可能会问,为什么 TypeScript 已经有一个 void 类型为啥还需要 never 类型。...这样的函数在 TypeScript 中被推断有一个 void 返回类型。 具有 never 返回类型的函数永不返回。它也不返回 undefined。

    1K20

    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。

    12310

    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" | "

    72520

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

    :TS 内置工具泛型高阶使用 TypeScript 2.1 新特性一览:查找/映射类型及 any 类型的推断 都是在 2.1 版本引入的 TypeScript 2.8:Exclude 等条件类型是在 2.8...X : Y 表示,如果 T 可以赋值给 U (类型兼容),则返回 X,否则返回 Y; 1.3、使用 `keyof` 和 `in` keyof 可以用来取得一个对象接口的所有 key 值: interface...3.1、Exclude(官方) 某些地方也称为 Diff 作用:从 T 中剔除可以赋值给 U 的类型,换言之就是从T 中排除 U 源码: type Exclude = T extends...X : Y) 示例: type T = Exclude // -> 2 参考文档: Add support for literal type subtraction TypeScript...源码: // node_modules/typescript/lib/lib.es5.d.ts interface ThisType { } 解释: 可以看到声明中只有一个接口,没有任何的实现

    1.3K10

    Typescript中的复杂类型声明

    Typescriptjavascript加入了众多类型声明语法,灵活使用可使代码变得健壮,不严谨的类型声明会带来后期的维护麻烦。...本篇假设读者已经学会ts的基础类型声明语法,包括type、interface、extends和泛型,在此基础上,聊一聊一些更加复杂的类型声明场景以及解决办法。...另一个我们需要用到的例子是条件类型Exclude,它的源码就位于Readonly的下方不远处(你可能需要将ts升级到2.8以上才能看到),源代码如下: /** * Exclude from T those...never : T; 使用时,Exclude需要填入两个泛型类,当T继承自U的时候,结果等于never类型,当T和U不相关时,结果等于T类型。...TypeScript does code flow analysis (

    7.1K50

    TypeScript 官方手册翻译计划【十】:类型操控-映射类型

    因为我也是 TypeScript 的初学者,所以无法保证翻译百分之百准确,若有错误,欢迎评论区指出; 翻译内容:暂定翻译内容 TypeScript Handbook,后续有空会补充翻译文档的其它部分;...索引签名用于那些没有提前声明的属性去声明类型,而映射类型是基于索引签名的语法构建的。...never 类型,从而过滤掉某些键: // 移除 kind 属性 type Exclude = T extends U ?...never : T type RemoveKindField = { [Property in keyof Type as Exclude]: Type...举个例子,下面是一个使用了条件类型的映射类型,根据对象是否有一个设置字面量 true 的属性 pii,它会返回 true 或者 false: type ExtractPII = {

    77750
    领券