首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以从一个联合类型创建一个新类型,并删除它的一些选项?

是否有一种方法可以从一个联合类型创建一个新类型,并删除它的一些选项?
EN

Stack Overflow用户
提问于 2019-07-04 09:04:17
回答 2查看 81关注 0票数 0

让我们说我们有

代码语言:javascript
复制
type U = A | B | C

我们需要U型没有一些选择

代码语言:javascript
复制
function f<T option U>(u: U): U without T {...}

我们该如何表达

  1. U型结合
  2. T是U的一种选择
  3. 返回的类型类似于U,但没有一些选项
EN

回答 2

Stack Overflow用户

发布于 2019-07-04 10:43:55

是的,使用从stadard库排除。

代码语言:javascript
复制
type U = 'a' | 'b' | 'c';
type nonA = Exclude<U, 'a'>; // 'b' | 'c'

为了你的职责

代码语言:javascript
复制
function f<T extends U>(u: U): Exclude<U,T> {...}

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#conditional-types

票数 0
EN

Stack Overflow用户

发布于 2019-07-04 11:09:55

100%工作实例

代码语言:javascript
复制
function withoutType<U, T extends U>(u: U) {
  return u as Exclude<U, T>;
}

type Union = string | number | Function;
let x = 5;
let y = withoutType<Union, Function>(x); // let x: string | number;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56884345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档