Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
490 views
in Technique[技术] by (71.8m points)

Typescript: Override static method of generic class

Given a template class: Playground


abstract class  Model<T> {
    public static create<T extends 'Model'>(
        this: { new (): T } & typeof Model,
        values?: object
    ): Promise<T>{
        console.log(values);
        return {} as Promise<T>; // hack..
    };
}

type OnlyAttrs<T> = {
    [K in {
        [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? never : K;
    }[keyof T]]?: T[K];
};

export abstract class BaseModel<T> extends Model<T> {

    asd!: T;

    static create<T extends Model<T>>(vals:OnlyAttrs<T>) : Promise<T>{
        return super.create(vals) // ##### How to make this work!? #####
    }
}


how can I override the static super create method of a generic class?

This example is taken from Sequelize, in an attempt to make the create method strongly typed with OnlyAttrs<T>

question from:https://stackoverflow.com/questions/65623243/typescript-override-static-method-of-generic-class

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...