This commit is contained in:
23
src/tests.ts
23
src/tests.ts
@@ -51,25 +51,28 @@ const subInst = await SubTest.createPromise({ name: "", prout: "" })
|
||||
// console.log(subInst)
|
||||
|
||||
|
||||
class BaseClass {
|
||||
declare ["constructor"]: typeof BaseClass
|
||||
|
||||
static readonly issou = "gneugneu"
|
||||
class Box<T> {
|
||||
declare ["constructor"]: typeof Box
|
||||
constructor(public value: T) {}
|
||||
|
||||
otherMethod() {
|
||||
return "prout" as const
|
||||
}
|
||||
|
||||
method<I extends object>(
|
||||
this: Omit<BaseClass, "constructor"> & { ["constructor"]: Class<I> }
|
||||
method<
|
||||
C extends typeof Box & Class<I>,
|
||||
I extends Box<any>
|
||||
>(
|
||||
// this: Omit<BaseClass<T>, "constructor"> & { ["constructor"]: Class<I> }
|
||||
this: { ["constructor"]: C }
|
||||
) {
|
||||
this.otherMethod()
|
||||
return new this.constructor()
|
||||
// this.otherMethod()
|
||||
return new this.constructor(69)
|
||||
}
|
||||
}
|
||||
|
||||
class Superclass extends BaseClass {
|
||||
declare ["constructor"]: typeof Superclass
|
||||
class SuperBox<T> extends Box<T> {
|
||||
declare ["constructor"]: typeof SuperBox
|
||||
}
|
||||
|
||||
console.log(new Superclass().method())
|
||||
|
||||
Reference in New Issue
Block a user