当前位置: 首页 > 知识库问答 >
问题:

在TypeScript中作为类键入

廉学潞
2023-03-14

我在TypeScript中有一个接口或抽象类,我有一大堆实现/扩展接口/类的类,我想用所有子类的构造函数生成一个数组,但我想把数组类型为接口/超类。这可能吗?

export interface Section {
    somePropName: string;
}
export class AbstractSection {
    somePropName: string;
}
arrayOfClasses: any[] = [
    SectionSubclass1,
    SectionSubclass2,
    SectionSubclass3,
    SectionSubclass4,
    SectionSubclass5,
];

可以将ArrayOfClasses键入any[]以外的任何内容吗?我想尽可能地说得具体些。我知道在ActionScript中您至少可以执行vector. ,在Haxe中您可以执行array ,但是在TypeScript中您甚至不能作为classafaik键入。

共有1个答案

丰超
2023-03-14

如果要存储类:

arrayOfClasses: Array<typeof AbstractSection> = [...];

如果要存储类的实例或接口的实现:

arrayOfClasses: AbstractSection[] = [...];
 类似资料:
  • 我正在尝试将一个带有符号的对象定义为键类型,因为 MDN 说: 符号值可用作对象属性的标识符[…] 但是使用它作为键属性的类型: 导致以下错误: TS1023:索引签名参数类型必须为“字符串”或“数字”。 甚至它也可以用作索引类型。我正在使用最新的打字稿版本(),我发现了相关问题: 类型脚本:以符号为键解构对象(他使用的是符号的实际实例,我想要类型) TypeScript:当尝试使用字符串|数字时

  • React/Typescript中对象的类型是什么,例如: 如果我需要将它定义为一个对象,我应该输入什么类型,而不是

  • 是否可以像在Scala中一样在TypeScript中为严格类型定义值类? TypeScript"编译器"似乎忽略了类型别名: 在Scala中,我们可以使用值类(除了严格的类型之外,它还提供了更多的优势):

  • 乍一看,这似乎并不是非常有用(即使是错误提及原始类型),但随着类型注释变得更加复杂, 关键字的好处变得明显。 联合类型允许类型注释指定属性应该是一组类型之一(两者任一)。 function admitAge (age: number|string): string { return `I am ${age}, alright?!`; } admitAge('Forty'); // 'I am

  • 我最近遇到了这个问题,我不确定是使用接口还是类来定义特定的类型。 注意:这个问题不是问和之间的区别。 例如,给定这个类和接口 我将使用类或接口作为函数参数中的类型。 在我看来,两者都可以,但我更喜欢使用类来避免同步接口上的所有方法/属性。我认为接口只是一个类必须遵守的模板/契约。 但是,在我的例子中,大多数情况下,该类通常会添加更多不在接口定义中的方法/属性。 下面这个类就是一个很好的例子。 在这

  • 本文向大家介绍TypeScript 类型参数作为约束,包括了TypeScript 类型参数作为约束的使用技巧和注意事项,需要的朋友参考一下 示例 使用TypeScript 1.8,类型参数约束可以从同一类型参数列表中引用类型参数。以前这是一个错误。