Ho una classe Typescript che include un generico che deve estendere un'altra classe e implementare un'interfaccia. Ecco un esempioGeneric generico dattiloscritto che estende classe e interfaccia
interface IHasImage {
imageUrl():string;
}
class Model {
}
class View<T extends Model & IHasImage> {
}
Questo è il tipo di sintassi che ho visto altrove, ma c'è un modo di fare questo a macchina?
edit: Prova incollando il seguente dentro al parco giochi: http://www.typescriptlang.org/Playground
...[removed edit 1 code]
Edit 2: risposta e il ragionamento
(mi scuso, il primo esempio aveva alcuni difetti!) Ho segnato la risposta corretta qui sotto, anche se probabilmente ha bisogno di alcuni suggerimenti come delineato in questo problema github (https://github.com/Microsoft/TypeScript/issues/1885)
Dato il seguente codice è possibile vedere la metodologia funziona.
L'unica altra cosa da dire è che il tentativo di implement
l'interfaccia da una classe che non estende la classe base non riesce anche. Tuttavia, poiché il controllo Typescript è in base alla struttura dell'oggetto, avrà esito positivo se si aggiunge manualmente la proprietà name
alla classe.
Questo è anche il motivo per cui riesce con la ModelCorrect
che extends
ma non lo fa implements
.
penso che ci sia un bug nell'esempio. questo nel costruttore non è il valore di tipo generico.La classe dovrebbe avere un modello: T proprietà o constructur può accettare un valore: T argomento – Martijn