{"id":68065,"date":"2023-04-18T12:27:13","date_gmt":"2023-04-18T11:27:13","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=68065&#038;preview=true&#038;preview_id=68065"},"modified":"2023-04-28T07:57:05","modified_gmt":"2023-04-28T06:57:05","slug":"typescript-5-0","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/","title":{"rendered":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!"},"content":{"rendered":"<p>TypeScript 5.0 \u00e8 stato rilasciato ufficialmente il 16 marzo 2023 ed \u00e8 ora disponibile al pubblico. Questa versione introduce molte nuove funzionalit\u00e0 con l&#8217;obiettivo di rendere TypeScript pi\u00f9 snello, semplice e veloce.<\/p>\n<p>Questa nuova versione modernizza i decorator per la personalizzazione delle classi, e dunque permette di personalizzare le classi e i loro membri in modo riutilizzabile. <a href=\"https:\/\/kinsta.com\/it\/blog\/tipi-di-developer\/\">Sviluppatrici<\/a> e sviluppatori possono ora aggiungere un modifier const alla dichiarazione di un parametro di tipo, facendo s\u00ec che le inferenze di tipo const siano quelle predefinite. La nuova versione trasforma inoltre tutti gli enum in union enum, semplificando la struttura del codice e velocizzando l&#8217;esperienza in TypeScript.<\/p>\n<p>In questo articolo vedremo le modifiche introdotte in TypeScript 5.0, dando uno sguardo approfondito alle sue nuove caratteristiche e funzionalit\u00e0.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Come Iniziare con TypeScript 5.0<\/h2>\n<p>TypeScript \u00e8 un compiler ufficiale che potete installare nel vostro progetto utilizzando <a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-npm\/\">npm<\/a>. Se volete iniziare a usare TypeScript 5.0, potete eseguire il seguente comando nella directory del progetto:<\/p>\n<pre><code class=\"language-bash\">npm install -D typescript<\/code><\/pre>\n<p>Questo installer\u00e0 il compiler nella directory <strong>node_modules<\/strong>, che ora potrete eseguire con il comando <code>npx tsc<\/code>.<\/p>\n<p>Trovate le istruzioni per usare la <a href=\"https:\/\/code.visualstudio.com\/docs\/typescript\/typescript-compiling#_using-the-workspace-version-of-typescript\" target=\"_blank\" rel=\"noopener noreferrer\">nuova versione di TypeScript in Visual Studio Code in questa documentazione<\/a>.<\/p>\n\n<h2>Cosa c&#8217;\u00e8 di Nuovo in TypeScript 5.0?<\/h2>\n<p>In questo articolo esploriamo i 5 principali aggiornamenti introdotti in TypeScript. Queste caratteristiche includono:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Decorator Pi\u00f9 Moderni<\/h3>\n<p>I decorator sono presenti in TypeScript da un po&#8217; di tempo con un flag sperimentale, ma la nuova versione li aggiorna con la proposta di ECMAScript, che \u00e8 ora in <a href=\"https:\/\/github.com\/tc39\/proposal-decorators\" target=\"_blank\" rel=\"noopener noreferrer\">fase 3<\/a>, cio\u00e8 la fase in cui viene aggiunta a TypeScript.<\/p>\n<p>I decorator sono un modo per personalizzare il comportamento delle classi e dei loro membri in modo riutilizzabile. Per esempio, se avete una classe che ha due metodi, <code>greet<\/code> e <code>getAge<\/code>:<\/p>\n<pre><code class=\"language-typescript\">class Person {\n\tname: string;\n\tage: number;\n\tconstructor(name: string, age: number) {\n    \tthis.name = name;\n    \tthis.age = age;\n\t}\n\n\tgreet() {\n    \tconsole.log(`Hello, my name is ${this.name}.`);\n\t}\n\n\tgetAge() {\n    \tconsole.log(`I am ${this.age} years old.`);\n\t}\n}\n\nconst p = new Person('Ron', 30);\np.greet();\np.getAge();<\/code><\/pre>\n<p>Nei casi d&#8217;uso reali, questa classe dovrebbe avere metodi pi\u00f9 complicati, che gestiscono alcune logiche asincrone e hanno effetti collaterali, ecc., in cui inserire alcune chiamate a <code>console.log<\/code> per facilitare il debug dei metodi.<\/p>\n<pre><code class=\"language-typescript\">class Person {\n\tname: string;\n\tage: number;\n\tconstructor(name: string, age: number) {\n    \tthis.name = name;\n    \tthis.age = age;\n\t}\n\n\tgreet() {\n    \tconsole.log('LOG: Method Execution Starts.');\n    \tconsole.log(`Hello, my name is ${this.name}.`);\n    \tconsole.log('LOG: Method Execution Ends.');\n\t}\n\n\tgetAge() {\n    \tconsole.log('LOG: Method Execution Starts.');\n    \tconsole.log(`I am ${this.age} years old.`);\n    \tconsole.log('Method Execution Ends.');\n\t}\n}\n\nconst p = new Person('Ron', 30);\np.greet();\np.getAge();<\/code><\/pre>\n<p>Si tratta di uno schema che ricorre spesso, e avere una soluzione da applicare a ogni metodo sarebbe decisamente comodo.<\/p>\n<p>\u00c8 qui che entrano in gioco i decorator. Possiamo definire una funzione chiamata <code>debugMethod<\/code> che si presenta come segue:<\/p>\n<pre><code class=\"language-typescript\">function debugMethod(originalMethod: any, context: any) {\n\tfunction replacementMethod(this: any, ...args: any[]) {\n    \tconsole.log('Method Execution Starts.');\n    \tconst result = originalMethod.call(this, ...args);\n    \tconsole.log('Method Execution Ends.');\n    \treturn result;\n\t}\n\treturn replacementMethod;\n}<\/code><\/pre>\n<p>Nel codice precedente, <code>debugMethod<\/code> prende il metodo originale (<code>originalMethod<\/code>) e restituisce una funzione che fa quanto segue:<\/p>\n<ol start=\"1\">\n<li>Registra il messaggio \u201cMethod Execution Starts\u201d (&#8220;Inizia l&#8217;esecuzione del metodo&#8221;).<\/li>\n<li>Passa il metodo originale e tutti i suoi argomenti (compreso questo).<\/li>\n<li>Invia il messaggio \u201cMethod Execution Ends\u201d (&#8220;L&#8217;esecuzione del metodo \u00e8 terminata&#8221;).<\/li>\n<li>Restituisce ci\u00f2 che il metodo originale ha restituito.<\/li>\n<\/ol>\n<p>Utilizzando i decorator, potete applicare <code>debugMethod<\/code> ai vostri metodi come mostrato nel codice seguente:<\/p>\n<pre><code class=\"language-typescript\">class Person {\n\tname: string;\n\tage: number;\n\tconstructor(name: string, age: number) {\n    \tthis.name = name;\n    \tthis.age = age;\n\t}\n\t@debugMethod\n\tgreet() {\n    \tconsole.log(`Hello, my name is ${this.name}.`);\n\t}\n\t@debugMethod\n\tgetAge() {\n    \tconsole.log(`I am ${this.age} years old.`);\n\t}\n}\nconst p = new Person('Ron', 30);\np.greet();\np.getAge();<\/code><\/pre>\n<p>Il risultato sar\u00e0 il seguente:<\/p>\n<pre><code class=\"language-bash\">LOG: Entering method.\nHello, my name is Ron.\nLOG: Exiting method.\nLOG: Entering method.\nI am 30 years old.\nLOG: Exiting method.<\/code><\/pre>\n<p>Quando si definisce la funzione decorator (<code>debugMethod<\/code>), viene passato un secondo parametro chiamato <code>context<\/code> (\u00e8 l&#8217;oggetto contesto, che contiene alcune informazioni utili su come \u00e8 stato dichiarato il metodo decorato e anche il nome del metodo). Potete aggiornare il vostro <code>debugMethod<\/code> per ottenere il nome del metodo dall&#8217;oggetto <code>context<\/code>:<\/p>\n<pre><code class=\"language-typescript\">function debugMethod(\n\toriginalMethod: any,\n\tcontext: ClassMethodDecoratorContext\n) {\n\tconst methodName = String(context.name);\n\tfunction replacementMethod(this: any, ...args: any[]) {\n    \tconsole.log(`'${methodName}' Execution Starts.`);\n    \tconst result = originalMethod.call(this, ...args);\n    \tconsole.log(`'${methodName}' Execution Ends.`);\n    \treturn result;\n\t}\n\treturn replacementMethod;\n}<\/code><\/pre>\n<p>Quando eseguite il vostro codice, l&#8217;output riporter\u00e0 il nome di ogni metodo decorato con il decorator <code>debugMethod<\/code>:<\/p>\n<pre><code class=\"language-bash\">'greet' Execution Starts.\nHello, my name is Ron.\n'greet' Execution Ends.\n'getAge' Execution Starts.\nI am 30 years old.\n'getAge' Execution Ends.<\/code><\/pre>\n<p>Le cose che potete fare con i decorator sono molte di pi\u00f9. Per maggiori informazioni su come usare i decorator in TypeScript, consultate la <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/50820\">richiesta di pull originale<\/a>.<\/p>\n<h3>Introduzione dei Parametri Const Type<\/h3>\n<p>Questo \u00e8 un altro grande rilascio che vi offre un nuovo strumento con i generici per migliorare l&#8217;inferenza quando chiamate le funzioni. Per impostazione predefinita, quando dichiarate dei valori con <code>const<\/code>, TypeScript ne deduce il tipo e non i valori letterali:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: string[]\nconst names = ['John', 'Jake', 'Jack'];<\/code><\/pre>\n<p>Finora, per ottenere l&#8217;inferenza desiderata, dovevate usare l&#8217;asserzione const aggiungendo &#8220;as const&#8221;:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: readonly [\"John\", \"Jake\", \"Jack\"]\nconst names = ['John', 'Jake', 'Jack'] as const;<\/code><\/pre>\n<p>Quando chiamate delle funzioni, la situazione \u00e8 simile. Nel codice qui sotto, il tipo dedotto per <strong>countries<\/strong> \u00e8 <code>string[]<\/code>:<\/p>\n<pre><code class=\"language-typescript\">type HasCountries = { countries: readonly string[] };\nfunction getCountriesExactly(arg: T): T['countries'] {\n\treturn arg.countries;\n}\n\n\/\/ Inferred type: string[]\nconst countries = getCountriesExactly({ countries: ['USA', 'Canada', 'India'] });<\/code><\/pre>\n<p>Potreste desiderare un tipo pi\u00f9 specifico; prima, un modo per risolvere il problema era quello di aggiungere l&#8217;asserzione <code>as const<\/code>:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: readonly [\"USA\", \"Canada\", \"India\"]\nconst names = getNamesExactly({ countries: ['USA', 'Canada', 'India'] } as const);<\/code><\/pre>\n<p>Questo pu\u00f2 essere difficile da ricordare e da implementare. Tuttavia, TypeScript 5.0 introduce una nuova funzione che consente di aggiungere un modificatore const alla dichiarazione di un parametro di tipo, che applicher\u00e0 automaticamente un&#8217;inferenza di tipo const come impostazione predefinita.<\/p>\n<pre><code class=\"language-typescript\">type HasCountries = { countries: readonly string[] };\nfunction getNamesExactly(arg: T): T['countries'] {\n\treturn arg.countries;\n}\n\n\/\/ Inferred type: readonly [\"USA\", \"Canada\", \"India\"]\nconst names = getNamesExactly({ countries: ['USA', 'Canada', 'India'] });<\/code><\/pre>\n<p>L&#8217;uso dei parametri type <code>const<\/code> consente a chi sviluppa di esprimere pi\u00f9 chiaramente le intenzioni nel proprio codice. Se una variabile \u00e8 destinata a rimanere costante e a non cambiare mai, l&#8217;uso di un parametro <code>const<\/code> assicura che non possa essere modificata accidentalmente.<\/p>\n<p>Potete consultare la <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51865\">richiesta di pull originale<\/a> per maggiori informazioni sul funzionamento del parametro di tipo const in TypeScript.<\/p>\n<h3>Miglioramenti agli Enum<\/h3>\n<p>Gli enum in TypeScript sono un potente costrutto che permette di definire un insieme di costanti denominate. In TypeScript 5.0 sono stati apportati dei miglioramenti agli enum per renderli ancora pi\u00f9 flessibili e utili.<\/p>\n<p>Per esempio, se il seguente enum viene passato in una funzione:<\/p>\n<pre><code class=\"language-typescript\">enum Color {\n\tRed,\n\tGreen,\n\tBlue,\n}\n\nfunction getColorName(colorLevel: Color) {\n\treturn colorLevel;\n}\n\nconsole.log(getColorName(1));<\/code><\/pre>\n<p>Prima dell&#8217;introduzione di TypeScript 5.0, potevate passare un numero di livello sbagliato e non si verificava alcun errore. Ma con l&#8217;introduzione di TypeScript 5.0, verr\u00e0 immediatamente comunicato un errore.<\/p>\n<p>Inoltre, la nuova versione trasforma tutti gli enum in union enum creando un tipo unico per ogni membro calcolato. Questo miglioramento consente di restringere tutti gli enum e di fare riferimento ai loro membri come tipi:<\/p>\n<pre><code class=\"language-typescript\">enum Color {\n\tRed,\n\tPurple,\n\tOrange,\n\tGreen,\n\tBlue,\n\tBlack,\n\tWhite,\n}\n\ntype PrimaryColor = Color.Red | Color.Green | Color.Blue;\n\nfunction isPrimaryColor(c: Color): c is PrimaryColor {\n\treturn c === Color.Red || c === Color.Green || c === Color.Blue;\n}\n\nconsole.log(isPrimaryColor(Color.White)); \/\/ Outputs: false\nconsole.log(isPrimaryColor(Color.Red)); \/\/ Outputs: true<\/code><\/pre>\n<h3>Miglioramenti delle Prestazioni di TypeScript 5.0<\/h3>\n<p>TypeScript 5.0 include numerosi cambiamenti significativi nella struttura del codice, nelle strutture dati e nelle estensioni algoritmiche. Questo ha contribuito a migliorare l&#8217;intera esperienza di TypeScript, dall&#8217;installazione all&#8217;esecuzione, rendendola pi\u00f9 veloce ed efficiente.<\/p>\n<p>Per esempio, la differenza tra le dimensioni del pacchetto di TypeScript 5.0 e 4.9 \u00e8 davvero notevole.<\/p>\n<p>TypeScript \u00e8 stato recentemente migrato dagli spazi dei nomi ai moduli, consentendogli di sfruttare i moderni strumenti di compilazione in grado di eseguire ottimizzazioni come lo scope hoisting. Inoltre, la rimozione di alcuni codici deprecati ha permesso di ridurre di circa 26,4 MB la dimensione del pacchetto di TypeScript 4.9, che era di 63,8 MB.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/04\/pasted-image-0.png\" alt=\"Grafico a barre che confronta la dimensione del pacchetto TypeScript tra la versione 4.9 e la 5.0: la versione 4.9 pesa 63.8 MB, mentre la 5.0 pesa 37.4 MB\" width=\"1600\" height=\"959\"><figcaption class=\"wp-caption-text\">Dimensioni del pacchetto TypeScript<\/figcaption><\/figure>\n<p>Ecco altri interessanti traguardi raggiunti in termini di velocit\u00e0 e dimensioni tra TypeScript 5.0 e 4.9:<\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><strong>Scenario<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Tempo o dimensioni rispetto a TS 4.9<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Build time di material-ui<\/td>\n<td colspan=\"1\" rowspan=\"1\">90%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Startup time del Compiler TypeScript<\/td>\n<td colspan=\"1\" rowspan=\"1\">89%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Build time di Playwright<\/td>\n<td colspan=\"1\" rowspan=\"1\">88%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Self-build time del compiler TypeScript<\/td>\n<td colspan=\"1\" rowspan=\"1\">87%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Build time di Outlook Web<\/td>\n<td colspan=\"1\" rowspan=\"1\">82%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Build time di VS Code<\/td>\n<td colspan=\"1\" rowspan=\"1\">80%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Dimensione del pacchetto typescript npm<\/td>\n<td colspan=\"1\" rowspan=\"1\">59%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Risoluzione Bundler per una Migliore Risoluzione dei Moduli<\/h3>\n<p>Quando scrivete una dichiarazione di importazione in TypeScript, il compiler deve sapere a cosa si riferisce l&#8217;importazione. Lo fa utilizzando la risoluzione dei moduli. Per esempio, quando scrivete <code>import { a } from \"moduleA\"<\/code>, il compiler deve conoscere la definizione di <code>a<\/code> in <code>moduleA<\/code> per verificarne l&#8217;utilizzo.<\/p>\n<p>In TypeScript 4.7 sono state aggiunte due nuove opzioni per le impostazioni di <code>--module<\/code> e <code>moduleResolution<\/code>: <code>node16<\/code> e <code>nodenext<\/code>.<\/p>\n<p>Lo scopo di queste opzioni era quello di rappresentare in modo pi\u00f9 accurato le regole di ricerca dei moduli ECMAScript in <a href=\"https:\/\/kinsta.com\/it\/blog\/node-js-vs-php\/\">Node.js<\/a>. Tuttavia, questa modalit\u00e0 presenta diverse restrizioni che non vengono applicate da altri strumenti.<\/p>\n<p>Per esempio, in un modulo ECMAScript in Node.js, qualsiasi importazione relativa deve includere un&#8217;estensione di file per funzionare correttamente:<\/p>\n<pre><code class=\"language-typescript\">import * as utils from \".\/utils\"; \/\/ Wrong\n\nimport * as utils from \".\/utils.mjs\"; \/\/ Correct<\/code><\/pre>\n<p>TypeScript ha introdotto una nuova strategia chiamata &#8220;moduleResolution bundler&#8221;. Questa strategia pu\u00f2 essere implementata aggiungendo il seguente codice nella sezione &#8220;compilerOptions&#8221; del vostro file di configurazione di TypeScript:<\/p>\n<pre><code class=\"language-json\">{\n\t\"compilerOptions\": {\n    \t\"target\": \"esnext\",\n    \t\"moduleResolution\": \"bundler\"\n\t}\n}<\/code><\/pre>\n<p>Questa nuova strategia \u00e8 adatta a chi usa i moderni bundler come Vite, esbuild, swc, Webpack, Parcel e altri che si servono di una strategia di ricerca ibrida.<\/p>\n<p>Potete consultare la <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51669\" target=\"_blank\" rel=\"noopener noreferrer\">richiesta di pull originale e la sua implementazione<\/a> per maggiori informazioni sul funzionamento del bundler <code>moduleResolution<\/code> in TypeScript.<\/p>\n<h2>Deprecazioni<\/h2>\n<p>TypeScript 5.0 include alcune deprecazioni, tra cui requisiti di runtime, modifiche a lib.d.ts e modifiche alle <a href=\"https:\/\/kinsta.com\/it\/blog\/graphql-nodejs\/\">API<\/a>.<\/p>\n<ol start=\"1\">\n<li><strong>Requisiti di runtime:<\/strong> TypeScript ora si rivolge a ECMAScript 2018 e il pacchetto prevede un motore minimo di 12.20. Pertanto, gli utenti di Node.js devono avere una versione minima di 12.20 o successiva per utilizzare TypeScript 5.0.<\/li>\n<li><strong>Modifiche a lib.d.ts:<\/strong> Sono state apportate alcune modifiche al modo in cui vengono generati i tipi per il DOM, che possono influire sul codice esistente. In particolare, alcune propriet\u00e0 sono state convertite da tipi numerici a tipi letterali numerici e le propriet\u00e0 e i metodi per la gestione degli eventi di taglia, copia e incolla sono stati spostati tra le interfacce.<\/li>\n<li><strong>Modifiche alle API:<\/strong> Sono state rimosse alcune interfacce non necessarie e sono stati apportati alcuni miglioramenti alla correttezza. TypeScript 5.0 \u00e8 passato anche ai moduli.<\/li>\n<\/ol>\n<p>TypeScript 5.0 ha deprecato alcune impostazioni e i loro valori corrispondenti, tra cui <code>target: ES3<\/code>, <code>out<\/code>, <code>noImplicitUseStrict<\/code>, <code>keyofStringsOnly<\/code>, <code>suppressExcessPropertyErrors<\/code>, <code>suppressImplicitAnyIndexErrors<\/code>, <code>noStrictGenericChecks<\/code>, <code>charset<\/code>, <code>importsNotUsedAsValues<\/code>, e <code>preserveValueImports<\/code>, cos\u00ec come prepend nei riferimenti al progetto.<\/p>\n<p>Anche se queste configurazioni rimarranno valide fino a TypeScript 5.5, verr\u00e0 emesso un avviso per gli utenti che le usano ancora.<\/p>\n\n<h2>Riepilogo<\/h2>\n<p>In questo articolo abbiamo visto alcune delle principali caratteristiche e miglioramenti apportati da TypeScript 5.0, come i miglioramenti agli enum, alla risoluzione dei bundler e ai parametri di tipo const, oltre ai miglioramenti alla velocit\u00e0 e alle dimensioni.<\/p>\n<p>Se state pensando a TypeScript per i vostri prossimi progetti, provate <a href=\"https:\/\/sevalla.com\/application-hosting\/\">gratuitamente l&#8217;Hosting di Applicazioni di Kinsta<\/a>.<\/p>\n<p><em>Ora tocca a voi! Quali sono le caratteristiche o i miglioramenti che trovate pi\u00f9 interessanti in TypeScript 5.0? Ce ne sono di significative che potrebbero esserci sfuggite? Fatecelo sapere nei commenti.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TypeScript 5.0 \u00e8 stato rilasciato ufficialmente il 16 marzo 2023 ed \u00e8 ora disponibile al pubblico. Questa versione introduce molte nuove funzionalit\u00e0 con l&#8217;obiettivo di rendere &#8230;<\/p>\n","protected":false},"author":287,"featured_media":68066,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25918,25847],"class_list":["post-68065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-framework-javascript","topic-tutorial-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro! - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!\" \/>\n<meta property=\"og:description\" content=\"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T11:27:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-28T06:57:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!\",\"datePublished\":\"2023-04-18T11:27:13+00:00\",\"dateModified\":\"2023-04-28T06:57:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\"},\"wordCount\":1522,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\",\"name\":\"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro! - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg\",\"datePublished\":\"2023-04-18T11:27:13+00:00\",\"dateModified\":\"2023-04-28T06:57:05+00:00\",\"description\":\"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg\",\"width\":3042,\"height\":1521,\"caption\":\"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Framework JavaScript\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/framework-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro! - Kinsta\u00ae","description":"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/","og_locale":"it_IT","og_type":"article","og_title":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!","og_description":"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.","og_url":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-04-18T11:27:13+00:00","article_modified_time":"2023-04-28T06:57:05+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Joel Olawanle","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!","datePublished":"2023-04-18T11:27:13+00:00","dateModified":"2023-04-28T06:57:05+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/"},"wordCount":1522,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/","url":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/","name":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro! - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg","datePublished":"2023-04-18T11:27:13+00:00","dateModified":"2023-04-28T06:57:05+00:00","description":"Approfondisci le caratteristiche di TypeScript 5.0 e scopri novit\u00e0 come i dichiaratori, il Const Type, il miglioramento degli Enum e molto altro.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/04\/typescript-50.jpg","width":3042,"height":1521,"caption":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/typescript-5-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Framework JavaScript","item":"https:\/\/kinsta.com\/it\/argomenti\/framework-javascript\/"},{"@type":"ListItem","position":3,"name":"Le novit\u00e0 di TypeScript 5.0: Dichiaratori, Const Type, Miglioramento degli Enum, Velocit\u00e0 e Molto Altro!"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/it\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/68065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=68065"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/68065\/revisions"}],"predecessor-version":[{"id":68328,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/68065\/revisions\/68328"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/translations\/dk"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68065\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/68066"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=68065"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=68065"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=68065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}