由基于构造函数可选参数的方法返回的类型

鲁克

我有一个构造函数的类:

class Example<T> {
    constructor(private elem: T, private array?: T[]) {}
}

我想添加方法some与返回:

  • Promise<T>如果array在构造函数中定义参数
  • Promise<T[]>如果在构造函数中定义了参数array

我怎样才能做到这一点?

实际上我有:

class Example<T, S extends T[] | undefined> {
    constructor(private elem: T, private array?: S) {}

    some(): S extends undefined ? Promise<T> : Promise<S> {
        if(!this.array) {
            return Promise.resolve(this.elem);
        }

        return Promise.resolve(this.array);
    }
}

const a = new Example(1, undefined);
a.some(); // ✓ Return Promise<number>

const b = new Example(1, [1, 2, 3]);
b.some(); // ✓ Return Promise<number[]>

const c = new Example(1);
c.some(); // ✗ Return Promise<number> | Promise<number[]>, should return Promise<number>
骇客
  1. extends从类型参数中删除约束S
  2. 反转S extends undefined ?S extends T[] ?
class Example<T, S> {
    constructor(private elem: T, private array?: S) {}

    some(): S extends T[] ? Promise<S> : Promise<T> {
        if (!this.array) {
            // @ts-ignore
            return Promise.resolve(this.elem);
        }
        // @ts-ignore
        return Promise.resolve(this.array);
    }
}

const a = new Example(1, undefined);
a.some(); // ✓ Return Promise<number>

const b = new Example(1, [1, 2, 3]);
b.some(); // ✓ Return Promise<number[]>

const c = new Example(1);
c.some(); // ✓ Return Promise<number>

游乐场链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Java方法链接(可选)基于参数

来自分类Dev

构造函数基于last参数的值?

来自分类Dev

构造函数的命名/可选参数有性能损失吗?

来自分类Dev

Swift-使构造函数参数上的标签可选吗?

来自分类Dev

RelativeSource构造函数的可选参数

来自分类Dev

如何使用可选参数创建构造函数?

来自分类Dev

编写条件可选构造函数的最佳方法

来自分类Dev

由类的方法返回类型参数化的方法

来自分类Dev

类型构造函数作为返回类型

来自分类Dev

具有可选参数的Boost.Python构造函数

来自分类Dev

带可选参数的DI构造函数

来自分类Dev

如何基于函数的参数推断承诺的返回类型?

来自分类Dev

Python的打字:申报返回值的类型基于函数的参数

来自分类Dev

如何基于构造函数选项设置方法返回类型?

来自分类Dev

TypeScript中的类构造函数中的可选参数

来自分类Dev

TypeScript一种更好的基于接口的可选构造函数参数

来自分类Dev

类型构造函数参数推断

来自分类Dev

从可选构造函数参数的返回类型推断类型

来自分类Dev

如何键入提示函数的可选返回参数?

来自分类Dev

如何使TypeScript基于返回值识别函数的参数类型?

来自分类Dev

基于可选参数存在的Typescript函数返回类型,而不使用函数重载

来自分类Dev

基于可选参数的函数返回类型

来自分类Dev

相同类型的多个可选参数的构造方法选择

来自分类Dev

从函数参数返回类型提示

来自分类Dev

构造函数的命名/可选参数有性能损失吗?

来自分类Dev

具有无效返回类型和可选参数的方法的Return_value_policy

来自分类Dev

Scala函数/方法参数化返回类型

来自分类Dev

带有可选参数的构造函数

来自分类Dev

函数由参数决定返回类型

Related 相关文章

  1. 1

    Java方法链接(可选)基于参数

  2. 2

    构造函数基于last参数的值?

  3. 3

    构造函数的命名/可选参数有性能损失吗?

  4. 4

    Swift-使构造函数参数上的标签可选吗?

  5. 5

    RelativeSource构造函数的可选参数

  6. 6

    如何使用可选参数创建构造函数?

  7. 7

    编写条件可选构造函数的最佳方法

  8. 8

    由类的方法返回类型参数化的方法

  9. 9

    类型构造函数作为返回类型

  10. 10

    具有可选参数的Boost.Python构造函数

  11. 11

    带可选参数的DI构造函数

  12. 12

    如何基于函数的参数推断承诺的返回类型?

  13. 13

    Python的打字:申报返回值的类型基于函数的参数

  14. 14

    如何基于构造函数选项设置方法返回类型?

  15. 15

    TypeScript中的类构造函数中的可选参数

  16. 16

    TypeScript一种更好的基于接口的可选构造函数参数

  17. 17

    类型构造函数参数推断

  18. 18

    从可选构造函数参数的返回类型推断类型

  19. 19

    如何键入提示函数的可选返回参数?

  20. 20

    如何使TypeScript基于返回值识别函数的参数类型?

  21. 21

    基于可选参数存在的Typescript函数返回类型,而不使用函数重载

  22. 22

    基于可选参数的函数返回类型

  23. 23

    相同类型的多个可选参数的构造方法选择

  24. 24

    从函数参数返回类型提示

  25. 25

    构造函数的命名/可选参数有性能损失吗?

  26. 26

    具有无效返回类型和可选参数的方法的Return_value_policy

  27. 27

    Scala函数/方法参数化返回类型

  28. 28

    带有可选参数的构造函数

  29. 29

    函数由参数决定返回类型

热门标签

归档