I have a class with constructor:
class Example<T> {
constructor(private elem: T, private array?: T[]) {}
}
and I want add method some with returned:
Promise<T>if not defined paramarrayin constructorPromise<T[]>if defined paramarrayin constructor
How can I do this?
Actualy I have:
class Example<T, S extends T[] | undefined> {
constructor(private elem: T, private array?: S) {}
some(): S extends undefined ? Promise<T> : Promise<S> {
if(!this.array) {
return Promise.resolve(this.elem);
}
return Promise.resolve(this.array);
}
}
const a = new Example(1, undefined);
a.some(); // ✓ Return Promise<number>
const b = new Example(1, [1, 2, 3]);
b.some(); // ✓ Return Promise<number[]>
const c = new Example(1);
c.some(); // ✗ Return Promise<number> | Promise<number[]>, should return Promise<number>