如何在TypeScript中使类泛型成为可选

提示

所以我知道TS中的可选参数,但是我不知道如何使通用类的可选内容像这样,这是我的代码

export class TableColumn<T, P? extends keyof T> {}

而且我什至不能让多个具有相同名称的班级这样做

 export class TableColumn<T, P extends keyof T> {}
 export class TableColumn<T, P extends keyof T, S extends keyof T> {}

有什么帮助吗?两种解决方案都可以帮助我,但我不知道为什么不起作用

更新资料

我正在这个图书馆工作

https://simplex24.de/smc-demo/direct-edit

它是角形材料表的通用表创建者,该库的问题在于,对于每一列,它仅获得模型的一个值

new TableColumn<TestData, 'id'>('My ID', 'id');

但我还需要更多,如果我不将其设为可选,则应将所有此类添加到

new TableColumn<TestData, 'aa','aa','aa'>('My aa', 'aa', 'aa', 'aa');
new TableColumn<TestData, 'bb', 'bb', 'bb'>('My bb', 'bb', 'bb', 'bb');
new TableColumn<TestData, 'cc', 'bb', 'aa'>('My cc', 'cc', 'bb', 'aa');

对于第一和第二列,请导入aa和bb,因为它不是可选的,我可以像这样简单地使其成为可选

new TableColumn<TestData, 'aa','aa','aa'>('My aa', 'aa',);
new TableColumn<TestData, 'bb','aa','aa'>('My bb', 'bb');
new TableColumn<TestData, 'cc', 'bb', 'aa'>('My cc', 'cc', 'bb', 'aa');

但正如U所见,我需要在类中将它们添加为通用类,因为我无法将其设为通用类

需要像这样

new TableColumn<TestData, 'aa'>('My aa', 'aa',);
new TableColumn<TestData, 'bb'>('My bb', 'bb');
new TableColumn<TestData, 'cc', 'bb', 'aa'>('My cc', 'cc', 'bb', 'aa');
keyone2693

您应该使用Never类型,这是U可以使用的方式

export class TableColumn<T,
P extends keyof T,
Z extends (keyof T | never) = never,
Y extends (keyof T | never) = never,
X extends (keyof T | never) = never,
W extends (keyof T | never) = never> {}

在构造函数中,很容易这样

constructor(public property: P,
public secondProperty?: Z, public thirdProperty?: Y,
public fourthProperty?: X, public fifthProperty?: W) {}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在HashMap中使用泛型?

来自分类Dev

如何在C#中使用抽象约束实例化泛型类

来自分类Dev

如何在类中使用Comparable作为泛型参数

来自分类Dev

如何在Swift中使用泛型对另一个类进行子类化?

来自分类Dev

如何在基类的方法中使用泛型指定out参数的类型?

来自分类Dev

如何在Swift中具有泛型的扩展中使用带有可选类方法的协议?

来自分类Dev

如何在Scala中使用泛型

来自分类Dev

如何将泛型参数的类型限制为Typescript函数以成为枚举

来自分类Dev

如何在泛型类中返回“ this”?

来自分类Dev

如何在接口中声明可选的泛型类型?

来自分类Dev

如何在Arrow函数中使用Typescript泛型添加两个参数

来自分类Dev

TypeScript-如何从方法的参数推断类的泛型?

来自分类Dev

如何在TypeScript中使用泛型为记录建立索引?

来自分类Dev

如何在TypeScript中使用泛型检测类实例

来自分类Dev

如何在C#中的泛型类中使用泛型类的对象?

来自分类Dev

如何在函数调用中使用Typescript泛型类构造函数作为参数

来自分类Dev

如何在打字稿中使用泛型扩展类?

来自分类Dev

如何使泛型类型始终成为泛型类型列表?

来自分类Dev

如何在C#中使用抽象约束实例化泛型类

来自分类Dev

如何在类中使用扩展的泛型类型的类型?

来自分类Dev

如何在Scala中使用泛型

来自分类Dev

如何在TypeScript中使用泛型在重载函数中进行类型转换

来自分类Dev

如何在参数需要类中使用泛型

来自分类Dev

如何在JAVA中的泛型类中使用override方法

来自分类Dev

如何在 Typescript 中做自反泛型类?

来自分类Dev

何时在 TypeScript 中使用泛型类?

来自分类Dev

如何在TypeScript中使用泛型类型初始化对象?

来自分类Dev

如何在非泛型静态类的多个方法中使用相同的泛型类型

来自分类Dev

Java 泛型:如何在泛型接口中获取泛型类的 Id?

Related 相关文章

  1. 1

    如何在HashMap中使用泛型?

  2. 2

    如何在C#中使用抽象约束实例化泛型类

  3. 3

    如何在类中使用Comparable作为泛型参数

  4. 4

    如何在Swift中使用泛型对另一个类进行子类化?

  5. 5

    如何在基类的方法中使用泛型指定out参数的类型?

  6. 6

    如何在Swift中具有泛型的扩展中使用带有可选类方法的协议?

  7. 7

    如何在Scala中使用泛型

  8. 8

    如何将泛型参数的类型限制为Typescript函数以成为枚举

  9. 9

    如何在泛型类中返回“ this”?

  10. 10

    如何在接口中声明可选的泛型类型?

  11. 11

    如何在Arrow函数中使用Typescript泛型添加两个参数

  12. 12

    TypeScript-如何从方法的参数推断类的泛型?

  13. 13

    如何在TypeScript中使用泛型为记录建立索引?

  14. 14

    如何在TypeScript中使用泛型检测类实例

  15. 15

    如何在C#中的泛型类中使用泛型类的对象?

  16. 16

    如何在函数调用中使用Typescript泛型类构造函数作为参数

  17. 17

    如何在打字稿中使用泛型扩展类?

  18. 18

    如何使泛型类型始终成为泛型类型列表?

  19. 19

    如何在C#中使用抽象约束实例化泛型类

  20. 20

    如何在类中使用扩展的泛型类型的类型?

  21. 21

    如何在Scala中使用泛型

  22. 22

    如何在TypeScript中使用泛型在重载函数中进行类型转换

  23. 23

    如何在参数需要类中使用泛型

  24. 24

    如何在JAVA中的泛型类中使用override方法

  25. 25

    如何在 Typescript 中做自反泛型类?

  26. 26

    何时在 TypeScript 中使用泛型类?

  27. 27

    如何在TypeScript中使用泛型类型初始化对象?

  28. 28

    如何在非泛型静态类的多个方法中使用相同的泛型类型

  29. 29

    Java 泛型:如何在泛型接口中获取泛型类的 Id?

热门标签

归档