【发布时间】:2017-09-29 02:48:24
【问题描述】:
我在 TypeScript 中有这个简单的代码:
abstract class Config {
readonly NAME: string;
readonly TITLE: string;
static CoreInterface: () => any
}
class Test implements Config {
readonly NAME: string;
readonly TITLE: string;
}
即使 Test 类中缺少 CoreInterface() 成员,TypeScript 也不会抱怨。为什么是这样?
我需要每个派生类在 CoreInterface() 静态函数中提供一些关于自身的元数据。我知道我可以扩展 Config 类并让每个子类提供自己的 CoreInterface() 实现,但我不希望子类自动继承 CConfig 类的任何成员.这就是为什么我使用“实现”而不是“扩展”
【问题讨论】:
-
因为它不是会员。它是一个静态字段,因此属于类,而不是类的实例。
-
那么有没有办法强制从 Config 派生的任何类都必须实现 CoreInterface()?
-
抽象类Config实现CoreInterface?这就是你想要的吗?
-
你将如何表示CoreInterface()?您可以在这里发布您的解决方案的示例代码吗?
-
实现一个接口的意思是:任何实现了Config的类的instance都会有这些实例字段和实例方法。由于 CoreInterface 是静态成员,因此无关紧要。静态成员属于类,而不是实例。而且它们不是多态的。如果您试图强制每个实现都必须具有给定的静态成员,那么 AFAIK,这是不可能的(而且我不明白它会起到什么作用)。你想达到什么目的?
标签: typescript interface static abstract-class static-typing