如何使用父静态方法在 TypeScript 中创建子 class?
How to create a child class in TypeScript using parent static method?
我有两个 classes:模型和用户。用户扩展模型。
export Model {
id: number;
static fromData<T>(data: any): T {
return Object.assign(new Model(), data);
}
}
export User extends Model {
name: string;
sayHi(): string {
return 'Hi, ' + this.name;
}
}
我想使用它的方式是这样的:
const currentUser = User.fromData(dataFromServer);
const message = currentUser.sayHi();
方法 hi() 不起作用,因为我创建了一个模型实例 class。
如何使用 TypeScript 泛型通过基 class 静态方法获取派生 class 的实例?
我正在计划具有共同点的不同实体的数量。
我看到了 ,但我不知道如何将参数传递给静态方法。
由于静态方法在 class 本身上,我们可以在静态方法内部使用 this
访问 class 构造函数,this
是 class 自己。如果我们将静态方法的 this
参数限制为 returning T
(this: new ()=> T
) 的构造函数,我们将获得 return 值的正确类型。 this
参数只是为了打字稿编译器的好处,它实际上不会被发送到 JS,你不必显式传递它:
export class Model {
id: number;
static fromData<T>(this: new () => T, data: any): T {
return Object.assign(new this(), data);
}
}
export class User extends Model {
name: string;
sayHi(): string {
return 'Hi, ' + this.name;
}
}
const currentUser = User.fromData({ id: 10, name: ""});
const message = currentUser.sayHi();
游乐场link
我有两个 classes:模型和用户。用户扩展模型。
export Model {
id: number;
static fromData<T>(data: any): T {
return Object.assign(new Model(), data);
}
}
export User extends Model {
name: string;
sayHi(): string {
return 'Hi, ' + this.name;
}
}
我想使用它的方式是这样的:
const currentUser = User.fromData(dataFromServer);
const message = currentUser.sayHi();
方法 hi() 不起作用,因为我创建了一个模型实例 class。
如何使用 TypeScript 泛型通过基 class 静态方法获取派生 class 的实例?
我正在计划具有共同点的不同实体的数量。
我看到了
由于静态方法在 class 本身上,我们可以在静态方法内部使用 this
访问 class 构造函数,this
是 class 自己。如果我们将静态方法的 this
参数限制为 returning T
(this: new ()=> T
) 的构造函数,我们将获得 return 值的正确类型。 this
参数只是为了打字稿编译器的好处,它实际上不会被发送到 JS,你不必显式传递它:
export class Model {
id: number;
static fromData<T>(this: new () => T, data: any): T {
return Object.assign(new this(), data);
}
}
export class User extends Model {
name: string;
sayHi(): string {
return 'Hi, ' + this.name;
}
}
const currentUser = User.fromData({ id: 10, name: ""});
const message = currentUser.sayHi();
游乐场link