gpt4 book ai didi

javascript - 如何检查 Typescript 条件类型中的类型是否未定义?

转载 作者:行者123 更新时间:2023-12-04 07:47:59 27 4
gpt4 key购买 nike

我目前有这种类型:

type ReturnType<T, E> = [T, E]

我正在尝试通过以下规则使这种类型“更智能”:

  • 如果 Tundefined,则类型将为 [undefined, E]
  • 如果 E未定义,则类型将为 [T]
  • TE 不能两者都是未定义

我正在尝试使用 Typescript 的条件类型来应用这些规则。
这有可能实现吗?

这是我到目前为止得到的:

type ReturnType<T, E> = 
T extends undefined
? E extends undefined ? never : [undefined, E]
: E extends undefined ? [T] : never

最佳答案

您似乎缺少的是,您可以同时对 T 和 E 进行测试:

[T, E] extends [TypeA, TypeB] ? ... : ...

使用它你可以做到:

type MyReturnType<T, E> = 
[T, E] extends [undefined, undefined] ? never
: T extends undefined ? [undefined, E]
: E extends undefined ? [T]
: [T, E]

type A = MyReturnType<undefined, undefined> // never
type B = MyReturnType<string, undefined> // [string]
type C = MyReturnType<undefined, number> // [undefined, number]
type D = MyReturnType<boolean, string> // [boolean, string]

Playground

关于javascript - 如何检查 Typescript 条件类型中的类型是否未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67116499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com