【发布时间】:2019-10-04 18:58:27
【问题描述】:
我想在不同的文件中访问以下类:
export class Person {
constructor() {}
static getDatabaseId(): string {
return '...';
}
}
它是注入的,而不是实际导入的。我想说明它是一个构造函数,它可以创建 Person 类型的新实例。这是我尝试过的:
let PersonConstructor: {new(): Person};
// inject Person constructor function
beforeEach(inject((_Person_) => {
PersonConstructor = _Person_;
}));
// create a new instance but also access the static variables
const p: Person = new PersonConstructor();
PersonConstructor.getDatabaseId(); // "property does not exist"
编译器不再抱怨从 Person 实例化新实例,但当然它现在也不知道 Person 的静态变量,因为它们丢失了在新声明的类型上。
如何才能正确输入?
【问题讨论】:
-
什么是“const Person: {new(): Person)”?
-
我重命名了它,这样更清楚:PersonConstructor 是一个构造函数,用于创建 Person 类型的实例。
-
实例成员属于类而不是对象,这意味着每当您创建 Person 的新实例时,它都不会有静态成员,在本例中为
getDatabaseId()方法。 -
我更新了我的代码示例:构造函数被注入并分配给一个局部变量。所以我必须以某种方式表达注入的内容。
标签: javascript typescript class types