typescript - 类型转换后的 TypeScript“不是构造函数类型”错误
问题描述
我有以下打字稿代码:
class ClassA {
field1: any;
}
const SomeClassAsA = diContainer.get('SomeClass') as ClassA;
class ClassB extends ClassA {} // works
class ClassB extends SomeClassAsA {} // error: Type ClassA is not a constructor function type
为什么 ClassB 可以用 ClassA 扩展,但不能用其他一些转换为 ClassA 的对象?需要扩展 SomeClass。我怎样才能做到这一点?
我使用 TypeScript 1.5.3
解决方案
const SomeClassAsA = diContainer.get('SomeClass') as typeof ClassA;
// ^ added
当您使用类作为类型时,您实际上是在键入该类的一个实例。请记住,类是 javascript 中的真实对象,而不是interface
没有原始 javascript 推论的类。
这是有道理的,因为它允许您编写:
const person: Person = new Person()
person
显然是一个实例,Person
而不是类构造函数对象Person
。
因此,要获取类本身的类型,请使用typeof
运算符。
推荐阅读
- javascript - Using btoa to parse xls from javascript to C#
- linkedin - LinkedIn Share API 有时不显示 URL 的图像
- entity-framework - 包含在实体框架和 Cosmos DB 中
- java - 带有 JasperReport 的报告书 - 如何使用 $V{MASTER CURRENT_PAGE} 忽略索引页
- java - Spring Data JPA Hibernate - LazyInitializationException
- mysql - mysql 从结果中,如何选择在 2 列中具有相同值的行
- powershell - PS exclusive parameter set switches - better error message for missing parameter?
- xml - 使用带有变量而不是文件的 Powershell XSLT.Transform()
- sql-server - TSQL: group by Substring (Name) and retrieve ID in SELECT
- python - Python:以最优雅的方式拆分这个长度结构的字符串