【问题标题】:How to exclude a void type on a union type?如何在联合类型上排除 void 类型?
【发布时间】:2022-11-18 03:28:21
【问题描述】:

大家好,我有一个自定义泛型类型P,它是这样定义的P extends Record<string, unknown> | void

我想要一个 exists 函数

export class Parameters<P extends Record<string, unknown> | void> {
        public exists(field: P): boolean {
                return field in this.params
        }
}

但是我显然得到了一个编译错误,因为我不能在void类型上这样做。我怎样才能在我的exists函数中摆脱它?

谢谢!

【问题讨论】:

  • 为什么它是void,你怎么能传递一个void参数,为什么不使用undefined并且在函数内部有一个条件
  • 这不是一个最小的可重现示例,因为当我将您的代码粘贴到 playground 时,我收到一个与您的问题无关的错误。

标签: typescript


【解决方案1】:

首先确保参数不是undefined

export class Parameters<P extends Record<string, unknown> | void> {
    params!: P
    public exists(field: P): boolean {
        return this.params && field in this.params
    }
}

Playground

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 2021-02-25
    • 2011-03-31
    • 2020-08-04
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多