首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提示TypeScript中的抽象类

提示TypeScript中的抽象类
EN

Stack Overflow用户
提问于 2020-07-08 20:00:26
回答 2查看 91关注 0票数 2

我有一个类的数组,所有这些类都从一个基础抽象类扩展而来。如果你能原谅那些可怕的和过度使用的面向对象抽象:

代码语言:javascript
复制
abstract class Animal {
  abstract speak(): string;
}

class Dog extends Animal {
  speak(): string {
    return "woof... sigh"
  }
}

class Cat...

我有一个封装了所有这些实现的数组:

代码语言:javascript
复制
const all = [Cat, Dog];

我想告诉TypeScript,这个数组中的所有内容在构造时都将返回一个作为Animal实例的类。

重要的是要注意,这是传递类,而不是对象,所以这是无效的,因为类本身不是从抽象继承的。

代码语言:javascript
复制
const all : Array<Animal> = [Cat, Dog]

不幸的是,我似乎在文档中找不到任何关于通过new关键字输入提示的内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-08 20:54:54

我们希望声明一个值,当使用new调用该值时,将返回一个Animal。这是这样写的:

代码语言:javascript
复制
new() => Animal

注意与函数类型(() => Animal)的相似性。

完整的代码是:

代码语言:javascript
复制
const all: Array<new() => Animal> = [Cat, Dog];

或者,为了清晰起见,使用一个界面:

代码语言:javascript
复制
interface AnimalConstructor {
    new(): Animal;
}

const all: AnimalConstructor[] = [Cat, Dog];
票数 2
EN

Stack Overflow用户

发布于 2020-07-08 20:31:33

你应该能够做到这一点:

代码语言:javascript
复制
const all: (typeof Animal)[] = [Cat, Dog]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62794344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档