tengo esta funcion
function getCollection<T>(collectionType: T): Collection<T> { return new Collection<T>() } y en la clase Collection tengo esto
export class Collection<T> { public add (item: T) { // .. logic } }Tengo una interfaz de usuario definida así
export interface IStudent { }y cuando intento hacer
getCollection(IStudent).add({});Hay un error
TS2693: 'IStudent' solo se refiere a un tipo, pero aquí se usa como un valor.
¿Cómo hago para que acepte el tipo genérico y devuelva la colección estrictamente tipeada?
Un tipo genérico es un parámetro de tipo , no un parámetro de función. tu defines
function getCollection<T>(): Collection<T> { return new Collection<T>() } (observe collectionType era un parámetro no utilizado de todos modos) y luego llámelo como
getCollection<IStudent>().add({});