– Mitt ståsted er at, typer er fantastisk, men TypeScript kan være ganske mye styr.
Det sa Svelte-skaperen Rich Harris i et intervju på YouTube-kanalen Svelte Society forrige måned, melder DevClass.
For noen dager siden dukket det opp en pull request i Svelte-repoet med tittelen "TS to JSDoc Conversion".
Nice to see another big JavaScript project besides @webpack go all in on JSDoc annotations for their type checking. ✨ https://t.co/KhlHlaaeAH
— 📦🛠👷🏻♂️Sean Larkin (@TheLarkInn) May 9, 2023
Dette fikk mange til å stille spørsmål ved hvorfor dette ble gjort. Og får det noen konsekvenser for de som bruker Svelte og SvelteKit? Kan vi fortsatt bruke TypeScript i prosjektene våre?
JSDoc gjør mye av det samme
TypeScript har blitt svært populært blant utviklere, ikke bare fordi sterk typing reduserer risikoen for feil – men også fordi du får en mye bedre utvikleropplevelse i kodeeditoren. Som for eksempel at du kan holde markøren over en variabel eller et funksjonsnavn og se typeinformasjon og annen relevant informasjon.
Men mye av det samme du kan gjøre med TypeScript kan også gjøres med JSDoc, selv om JSDoc først og fremst er ment som et verktøy for å dokumentasjon.
Du kan for eksempel legge til JSDoc-informasjon foran en funksjon der du beskriver både hva funksjonen gjør, hvilke parametre den tar, og hvilke typer argumentene skal ha. Når du bruker denne funksjonen andre steder i kodebasen din, vil du kunne få opp informasjon via for eksempel IntelliSense i VS Code.
Støtte for typesjekking gjennom JSDoc er innebygget i VS Code, og kan skrus på ved å legge til dette på toppen i en JavaScript-fil:
// @ts-check
Dag Erik mener alle bør lære seg Svelte: – Det er gøy å skrive!
Full typesikkerhet, uten ulempene
Rich Harris mener det er bedre for de som lager rammeverk å bruke JSDoc på denne måten, i stedet for å skrive hele rammeverket i TypeScript.
– Så snart du bruker en .ts-fil, så må du ha "toolingen" som støtter det... Det er alle disse friksjonspunktene når du bruker et ikke-standard språk som TypeScript som har gjort at jeg nå ikke tror det er verdt det, sa Harris i intervjuet.
I stedet har de lagt alle typedefinisjonene i JSDoc-kommentarer.
– Da får vi all typesikkerheten, men ikke noen av ulempene, siden det er bare JavaScript. Alt er i kommentarer, du kan bare kjøre koden.
Harris sier de allerede har gjort dette i SvelteKit-kodebasen, noe som har fungert veldig bra. Planen er å gjøre det samme for Svelte 4.0.
Bruk fortsatt TypeScript til egne prosjekter
Selv om Svelte og SvelteKit nå går bort fra å bruke TypeScript, betyr ikke det at ikke andre kan lage Svelte-applikasjoner og -nettsider i TypeScript.
Funksjoner eksportert fra Svelte vil fortsatt nyte godt av alle de fordelen utviklere er vant til fra TypeScript, som typesjekking, IntelliSense, inline-dokumentasjon, og så videre.
«Skiftet til JSDoc er mindre gunstig hvis du bygger en app, fordi da vil du uansett ha et byggesteg.»
Når Harris snakker om at "TypeScript ikke er verdt bryet", mener han først og fremst til å lage rammeverk med.
– Skiftet til JSDoc er mindre gunstig hvis du bygger en app, fordi da vil du uansett ha et byggesteg. Du vil optimalisere koden, du vil minimere den og pakke alt sammen. Men hvis du derimot bygger et bibliotek, da vil jeg sterkt oppfordre til å bruke JSDoc i stedet, sa Harris.