sto cercando di creare un'istanza nuova HTMLDivElement a macchinaInstantiating nuova HTMLElement a macchina
var elem = new HTMLDivElement();
ma il browser getta
Uncaught TypeError: Illegal constructor.
La soluzione sembra essere quella di utilizzare
var elem = document.createElement('div');
ma Trovo questo subottimale per vari motivi.
Perché non è possibile istanziare elementi DOM direttamente quando c'è una nuova parola chiaveper in nelle lib.d.ts?
declare var HTMLDivElement: {
prototype: HTMLDivElement;
new(): HTMLDivElement;
}
Incredibile spiegazione. Sarebbe possibile avere un commento in lib.d.ts che lo spieghi? O non vuoi inquinare lib.d.ts con commenti? –
Avrebbe senso aggiungere un avvertimento o un errore da 'tsc' per il codice che richiama i costruttori su sottoclassi di' Elemento'? –
Se estendi HTMLElement, ad esempio 'classe Thing estende HTMLElement', puoi usare new per creare un'istanza con' let t = new Thing() '. Quindi puoi aggiungerlo al DOM! – Kokodoko