2 回答

TA贡献1815条经验 获得超10个赞
您可以使用构造函数签名方法,但您需要添加您需要访问的任何其他成员。
import {Person} from './Person';
let PersonConstructor: {
new(): Person
getDatabaseId(): string
} = Person;
// create a new instance but also access the static variables
const p: Person = new PersonConstructor();
PersonConstructor.getDatabaseId(); // "property does not exist"
或者,typeof Person如果您想使用与Person(构造函数签名和所有静态)完全相同的类型,则可以使用:
import {Person} from './Person';
let PersonConstructor: typeof Person = Person;
// create a new instance but also access the static variables
const p: Person = new PersonConstructor();
PersonConstructor.getDatabaseId(); // "property does not exist"

TA贡献1860条经验 获得超9个赞
我不确定您的代码的最终目标是什么。从TypeScript doc 开始,您尝试实现的一种可能的语法用法是修改static类的成员并使用新的静态成员创建新实例。
如果你打算这样做,正确的代码看起来像
let PersonConstructor: typeof Person = Person;
// create a new instance but also access the static variables
const p: Person = new PersonConstructor();
PersonConstructor.getDatabaseId(); // Also OK and you my change it. Original Person will not get it changed.
添加回答
举报