L'oggetto window in TypeScript
Questo articolo spiega l'oggetto window in TypeScript.
Puoi imparare le proprietà e i metodi dell'oggetto window tramite il codice.
YouTube Video
L'oggetto window in TypeScript
window è un oggetto globale in TypeScript e JavaScript che rappresenta l'intera finestra del browser. Include molte proprietà e metodi per accedere alle API del browser, manipolare il DOM (Document Object Model), utilizzare timer, storage e altre funzionalità.
tsconfig.json e l'oggetto window
In TypeScript, quando si accede all'oggetto window, le funzionalità globali specifiche del browser dispongono di definizioni di tipo che consentono il completamento automatico e il controllo dei tipi nell'editor. Grazie al file di definizione dei tipi standard di TypeScript (lib.dom.d.ts), TypeScript riconosce varie proprietà e metodi dell'oggetto window.
Quando si utilizza TypeScript, è comune posizionare un file tsconfig.json nella root del progetto. Questo file viene utilizzato per specificare le opzioni del compilatore e la portata dei file di definizione dei tipi.
Quando si lavora con window, è particolarmente importante abilitare le definizioni dei tipi del browser (definizioni dei tipi DOM). Senza questo, window e document genereranno errori di tipo.
1{
2 "compilerOptions": {
3 "target": "es6",
4 "module": "esnext",
5 "strict": true,
6 "lib": ["es6", "dom"], // Enable DOM type definitions
7 "outDir": "./dist"
8 },
9 "include": ["src"]
10}- Specificando
"lib": ["es6", "dom"], i tipi diwindowedocumentverranno riconosciuti e completati automaticamente correttamente.
Principali proprietà e metodi di window
window.documentwindow.documentè una proprietà utilizzata per accedere al DOM della pagina. È possibile recuperare elementi e apportare modifiche al DOM.
1console.log(window.document.title); // Display the title of the current document
- In questo esempio viene visualizzato il titolo del documento attuale.
window.localStorage/window.sessionStoragewindow.localStorageewindow.sessionStoragesono proprietà utilizzate per accedere alle funzionalità di archiviazione che consentono di salvare dati utente nel browser.
1window.localStorage.setItem('key', 'value'); // Save data
2const value = window.localStorage.getItem('key'); // Retrieve data
3console.log(value); // 'value'
- In questo esempio, i dati vengono salvati nel
localStorage, poi recuperati e visualizzati.
window.locationwindow.locationè un oggetto utilizzato per recuperare e manipolare le informazioni sull'URL corrente. È possibile effettuare reindirizzamenti e modificare gli URL.
1console.log(window.location.href); // Display the current URL
2window.location.href = 'https://example.com'; // Redirect to another page
- In questo esempio, l'URL viene visualizzato e l'utente viene reindirizzato a un'altra pagina.
window.setTimeout/window.setIntervalwindow.setTimeoutewindow.setIntervalsono metodi utilizzati per eseguire funzioni dopo un ritardo o a intervalli regolari.
1window.setTimeout(() => {
2 console.log('This will be executed after 2 seconds');
3}, 2000);- Questo codice esegue un processo che mostra un messaggio nella console dopo due secondi.
window.alert/window.confirm/window.promptalert,confirmepromptvisualizzano delle finestre di dialogo per mostrare avvisi o richiedere input all'utente.
1window.alert('Alert message');- Questo codice visualizza una finestra di avviso per notificare un messaggio.
Eventi dell'oggetto window
Poiché window fa parte del DOM, è possibile ascoltare direttamente gli eventi. In TypeScript, i tipi vengono completati automaticamente, quindi l'uso di nomi di eventi o proprietà errati causerà errori.
Evento di ridimensionamento della finestra
1window.addEventListener("resize", (event) => {
2 console.log("Window resized:", window.innerWidth, window.innerHeight);
3});- Questo codice mostra nella console la nuova larghezza e altezza quando la dimensione della finestra cambia.
Evento della tastiera
1window.addEventListener("keydown", (event: KeyboardEvent) => {
2 console.log(`Key pressed: ${event.key}`);
3});- Questo codice mostra nella console il tasto premuto quando l'utente preme un tasto.
Evento di caricamento della pagina
1window.addEventListener("load", () => {
2 console.log("Page fully loaded");
3});- Questo codice mostra un messaggio nella console quando la pagina ha terminato il caricamento.
Note
-
In TypeScript, i tipi degli oggetti evento sono dedotti automaticamente, quindi prestare attenzione a tipi come
KeyboardEventoMouseEventrende il tuo codice più sicuro. -
Si consiglia di rimuovere i listener degli eventi quando non sono più necessari. Puoi rimuovere i listener utilizzando il metodo
window.removeEventListener.
1function handleClick() {
2 console.log("Clicked!");
3}
4
5// Add event listener
6window.addEventListener("click", handleClick);
7
8// Remove event listener
9window.removeEventListener("click", handleClick);- Questo codice mostra un esempio di aggiunta e successiva rimozione di un listener per un evento di click.
Quando si aggiungono proprietà personalizzate
Quando si aggiungono proprietà personalizzate all'oggetto window, è necessario estendere i tipi in TypeScript per evitare errori di tipo.
1// Add a custom property to the window
2interface Window {
3 myCustomProperty: string;
4}
5
6window.myCustomProperty = "Hello, World!";
7console.log(window.myCustomProperty); // "Hello, World!"
- Questo codice è un esempio di aggiunta di una proprietà personalizzata all'oggetto
windowin TypeScript, assegnazione di un valore e visualizzazione dello stesso.
Precauzioni nell'uso dell'oggetto globale window
A causa del controllo rigoroso dei tipi di TypeScript, tentare di utilizzare proprietà o metodi inesistenti comporterà errori. Ad esempio, tentare di accedere a una proprietà inesistente sull'oggetto window così com'è causerà un errore, quindi è necessario estendere correttamente il tipo.
L'oggetto window svolge un ruolo centrale nell'accedere a varie funzionalità delle applicazioni browser e, in TypeScript, è possibile utilizzarlo in sicurezza sfruttando il controllo dei tipi.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.