我有许多带有静态变量的类,如下所示:
user.ts:
export class User {
static modelKey = 'user';
// other variables
}
car.ts:
export class Car {
static modelKey = 'car';
// other variables
}
我希望在某个地方拨打DataSource
(见下文),如下所示:
const dataSource = new DataSource<Car>();
数据-source.ts:
export class DataSource<T> {
constructor() {
console.log(T.modelKey); // won't compile
}
}
当然,它不会编译,因为我不能简单地使用T.<variable>
。所以,我的问题是:我怎样才能做到这一点?
答案 0 :(得分:2)
您不能仅在传入的参数上访问类型的属性,因为在运行时不存在类型。
但是你可以将你的类传递给你的构造函数,然后访问它的属性。
e.g。
export class User {
static modelKey = 'user';
// other variables
}
export class Car {
static modelKey = 'car';
// other variables
}
interface ModelClass<T> {
new (): T;
modelKey: string;
}
export class DataSource<T> {
constructor(clazz: ModelClass<T>) {
console.log('Model key: ', clazz.modelKey); // will compile
}
}
new DataSource(Car);