I have the following types in Typescript:
type Task<T> = () => Promise<T>;
type QueueItem<T> = { task: Task<T>; resolve: (v: T) => void; reject: () => any };
I have a class that uses these types:
class Queue {
private queue: QueueItem<T>[] = [];
insertTask<T>(task: () => Promise<T>): Promise<T> {
const promise = new Promise((resolve, reject) => {
this.queue.push({ task, resolve, reject });
});
return promise;
}
}
Im trying to define a new type that is an array of QueueItem<T>. I have tried:
queue = [] as QueueItem<T>[];
queue: QueueItem<T>[] = [];
queue<T>: QueueItem<T>[] = [];
But none worked. I keep getting the following error:
Cannot find name 'T'.ts(2304)
How can I define it correctly?
You can try it in this demo
Tis supposed to represent in this case. Did you meanclass Queue<T>? There is no point to having a generic property to a non generic class.class Queue<T>is strange, do I have to add every generic type variable that uses the class in the top of the class? :/resolve, it matters to the variance ofQueueItemhowTis used