tillbaka till startsidan

30. TypeScript är din nemesis

Lyssna på Spotify lyssna! Lyssna på iTunes

Vi börjar med att prata om att Anton längtar tillbaka till kontoret av en väldigt specifik anledning, innan vi hoppar in på dagens huvudämne: TypeScript. Allt om disciplinen som krävs för att skriva TS, att Therése tror hon aldrig kommer komma överens med TS och att misstag med sina typer kan kosta mycket. Dessutom en del om att använda TS utan att skriva typer och ett dåligt exempel på Discriminated Unions.

Om du gillar podden blir vi väldigt glada för en liten recension i iTunes eller en prenumeration på Spotify. Följ oss och säg hej på @asdfpodden på Instagram eller Twitter (Anton, Therése) <3

Länkar

Avsnittets skämt:

Vad säger utvecklaren när den måste dra?
Jag måste gitta!
Skrapa här!!
Transkribering
Transkriberingen är gjord av nån "AI-grej". Du kan förbättra den genom att klicka precis här :)
00:00:00
Vad säger utvecklaren som måste dra?
00:00:04
Jag vet inte.
00:00:07
Jag måste gitta.
00:00:10
Jag tänkte först att det var nåt sånt här git pull eller något.
00:00:14
Som den här klassiska mimen.
00:00:16
Någon typ "In case of fire, git".
00:00:18
"Commit git push" och så vidare.
00:00:21
Men det var okej.
00:00:25
Det är bara för att du försöker vara så fancy hela tiden.
00:00:30
Ja, jag tänker aldrig för avancerat.
00:00:32
I vilket fall, välkommen till ett nytt avsnitt av ASTF.
00:00:37
Podden där vi babblar på i en halvtimme om allt och ingenting.
00:00:42
Gud, vi har aldrig haft en intro så här förut.
00:00:45
Nej, jag tycker det.
00:00:47
Det stämmer inte riktigt heller med vad vi gör.
00:00:49
Eller ja, typ.
00:00:51
Ja, babblandet stämmer väl kanske.
00:00:53
Exakt. Det är kanske det som är nytt nu. 30 avsnitt in eller vad fan vi nu är.
00:00:59
Vad är det nya introt?
00:01:02
Ja, exakt. Poddar där vi babblar på om allt och ingenting.
00:01:04
Men det låter också som exakt alla andra poddar som finns i hela världen.
00:01:09
Så att jag vet inte.
00:01:11
Ja, vad är annars en podd?
00:01:13
Nej, exakt. Det är väl lite så det är.
00:01:19
Jag satt idag och tänkte på hur oerhört mycket jag längtar tillbaka till kontoret.
00:01:26
Och framförallt är det en anledning.
00:01:30
Och det är att kontor oftast har AC.
00:01:33
-Varmt eller? -Det är så fruktansvärt varmt i min lägenhet.
00:01:39
Nu är det lite extra varmt, för nu har jag stängt in mig här under någon sängöverdrag.
00:01:44
Så ljudet ska bli okej.
00:01:46
Allt jag gör för er lyssnare, ni borde tacka mig.
00:01:49
Men min lägenhet är extremt varm.
00:01:53
Jag har en fläkt som jag flyttar med mig
00:01:57
beroende på vart jag är i lägenheten eller i köket
00:02:00
eller om jag är i soffan eller i trängen.
00:02:02
Jag måste flytta med mig vart jag är, bara för att det blir så jäkla varmt.
00:02:05
Och då tänkte jag på idag att
00:02:07
"Fan, kontor har ju ändå AC. Gud vad skönt det ska bli."
00:02:12
Jag hatar ju att vara på kontor på sommaren just på grund av att den har AC.
00:02:19
För att det är så här, ja just det jag ska transportera mig så ska man åka så är det jättevarmt så då behöver jag inte det.
00:02:25
Då kan jag ta typ en skjort eller en klänning eller vad det är och sen så tänker jag inte så mycket på det.
00:02:29
Och sen kommer jag till kontoret och så fryser jag i åtta timmar.
00:02:33
Ja det är ju ett problem.
00:02:37
Men jag tycker definitivt det är värt det.
00:02:40
Och nu när jag har flyttat och även bytt uppdrag så bor jag relativt nära mitt nya kontor.
00:02:48
Jag var där en gång när det var intro.
00:02:51
Men jag skulle kunna ta mig dit nu bara för att det är så fruktansvärt varmt.
00:02:55
Så nästa vecka får vi se om det kanske inte blir någon dag på kontoret.
00:02:58
Även om inte en annan själ från teamet är där.
00:03:01
Men just för att AC bara är värde.
00:03:06
Ja, det låter väl rimligt. Jag har en relativt sval lägenhet faktiskt. Vi har liksom inget sol på den.
00:03:13
Det kan man vara ledsen över på andra sätt.
00:03:16
Ja, men det är ju också det sjuka. Jag har ju typ inte jättemycket sol heller.
00:03:19
Jag får typ lite sol kanske två timmar på morgonen. Nej, inte ens det. En timme på morgonen.
00:03:24
Och då lyser det in med extrem vinkel mot fönsterna. Och sen har jag inget mer sol.
00:03:28
Så sen går solen liksom åt andra hållet. Så jag vet inte varför det blir så varmt.
00:03:32
Men det är egentligen helt orelaterat till det vi tänkte prata om idag.
00:03:37
Vilket är en annan liten uppenbarelse jag fick.
00:03:41
Uppenbarelse låter ju kanske konstigt.
00:03:43
Men nu när jag har bytt uppdrag och man kommer in i något nytt så tycker jag det är jävligt kul.
00:03:49
För det blir ju att man jämför litegrann.
00:03:52
Okej, vad har jag suttit med för projekt innan?
00:03:54
Hur har kodkvaliteten varit där? Vilka teknikval har man gjort?
00:03:59
Allt sånt. Känner du likadant när du byter uppsättning, att det är kul att jämföra?
00:04:05
Ja, jag vet inte. Eller kul att jämföra? Jag tror snarare att det är lite stressande att inte veta hur saker fungerar.
00:04:22
Jag vet inte, det är som att jag glömt bort hur man byter saker och kommer in i nya.
00:04:28
Men det är det väl ändå, speciellt om man hittar liknande problem som man stött på förut.
00:04:33
Hur har de löst det här projektet och hur jämför det med det sättet vi löste det på innan eller inte löste det.
00:04:40
Så ja, jag landar nog kanske i att det är kul.
00:04:44
Bra utläggning.
00:04:46
Absolut. Jag tycker att det är väldigt intressant, för att folk gör ju så olika val.
00:04:52
Till exempel i projekten vi sitter i nu så har de inte kört Prettier innan, bara som ett exempel.
00:04:57
Och det har varit standard, eller väldigt många har gjort det valet i de projekten som de har kört innan.
00:05:02
Och när jag själv skapar något nytt nu för tiden så kör jag ju också alltid Prettier.
00:05:06
Så då var det så extremt ovanligt att man bara "det finns inte Prettier".
00:05:10
Nu har vi väl bestämt att vi ska lägga in det, men vi får se när det sker.
00:05:14
Det kräver en del handpåläggning när man inte haft det från början.
00:05:18
Ja, hysteriken och allt måste man avgöra om man vill ha kvar den.
00:05:23
Ja, exakt. Så vi får se hur det blir.
00:05:26
Det kommer att bli så här, det fanns ES-Lint med lite regler om
00:05:32
ska det finnas semicolon eller inte, hur ska man göra och radlängd och sånt.
00:05:36
Men det kommer ändå att bli att gör man en PR så kommer det bli
00:05:39
mycket formateringsändringar i början.
00:05:42
Alltså på filer som inte har ändrats.
00:05:44
Och det är ju en liten tröskel för att lägga in PrettyDude.
00:05:47
Även om jag tycker att det kanske är värt det i längden.
00:05:50
Men en sak som jag har reflekterat väldigt mycket över är just TypeScript.
00:05:55
Som jag körde på det tidigare uppdraget jag var på och även kör privat.
00:06:02
På lite hobbyprojekt som jag har igång.
00:06:04
Och inte kör på jobbet så att säga.
00:06:08
Och jag kom på mig själv med att tänka att det inte var många år sedan jag bara "Fy fan vad jobbigt det är med TypeScript"
00:06:15
Och att jag har gått till nu och tänkt "Fy fan vad jobbigt det är utan TypeScript"
00:06:20
Och den resan jag såg tillbaka på mig själv vid någon tidpunkt för något år sedan
00:06:30
ett år sedan, där jag kände att i TypeScript är allt mycket jobbigare.
00:06:34
Jag vill ha det dynamiskt typat, jag vill kunna göra vad jag vill.
00:06:38
Det går mycket snabbare att jobba och allt sånt.
00:06:40
Jag tror vi kanske var in på det här i något väldigt tidigt avsnitt i poddens historia.
00:06:45
Jag tror inte vi pratade så djupt om det då.
00:06:47
Men just när man ska ändra saker...
00:06:52
Vad tycker du om TypeScript? Kan vi börja där?
00:06:59
Jag är nog lite där du var förut. Fan vad jobbigt det är med TypeScript.
00:07:08
Med det sagt så var det väldigt länge sedan jag satt och kodade JavaScript.
00:07:12
Det sitter bara i TypeScript nu för tiden, nästan har gjort det ett tag.
00:07:18
Och jag förstår poängen med det. Jag tycker inte det är något konstigt.
00:07:24
Jag förstår varför, men sen så blir jag...
00:07:28
Ibland kommer jag på mig själv och tycker,
00:07:30
speciellt när man pratar om back-end-dela,
00:07:34
alltså Node och TypeScript.
00:07:37
Ibland kommer jag bara på mig själv och tycker så här,
00:07:39
"Fy fan vad mycket jobb som vi lägger ner på
00:07:43
att typa ett otypat språk.
00:07:45
Varför använder vi inte bara ett typat språk?"
00:07:49
Ja, den känslan kan jag förstå.
00:07:53
Det är verkligen ett övervägande att göra.
00:07:59
Min erfarenhet i början var att jag satt mycket i TypeScript-projekt som var jävligt avancerat typade.
00:08:07
Folk hade verkligen gått all in på Advanced Features-sidan i TypeScript-dokumentationen.
00:08:14
"Man kan göra så här, fan vad coolt!" Och så körde de på allt.
00:08:21
Och det gav en ganska sur eller dålig eftersmak när man väl satt i det.
00:08:26
För då kämpade man verkligen mot typerna skitmycket.
00:08:29
Alltså, "ja men här är typen, så öppnar man typningsfil och man bara, jag fattar inte ens vad som händer".
00:08:34
Alltså det är så mycket skit som händer i den här filen och det är liksom tre rader riktig kod och 500 rader typer.
00:08:41
Ja, för att jag tror det var någon gång i början när jag satt med TypeScript, det var någon gång jag fastnade i att jag skulle bygga en funktion, tror jag.
00:08:50
Jag kommer inte ihåg exakt vad det var men det var typen av, det verkar vara en bugg här.
00:08:54
Vi måste lägga till det här och det funkar inte.
00:08:56
Vi måste lägga till det här och det här och det där.
00:08:58
Det som egentligen var en rad kod blev tre rader kod för att det är god att se typningen.
00:09:04
Jag var så här, men vad tjänar vi på det här?
00:09:06
Tjänar vi de facto någonting på det här?
00:09:08
Jag har alltså lagt en eftermiddag på det här.
00:09:12
Jaha.
00:09:16
Den biten, ibland kan jag väl känna att det känns som att man jobbar emot det, sen när det är på plats så kan det hjälpa jättemycket såklart, men jag tror, jag är väl kanske inte, jag vill inte vara i mellanläget där, om det ska vara typescript då vill jag göra det ordentligt, inte använda alla fancygrejerna eventuellt, men då vill jag att det ska typas ordentligt.
00:09:39
Då vill jag ha samma typer som ska vara samma överallt.
00:09:43
Då vill jag ha samma bibliotek nästan.
00:09:46
Jag vill inte hålla på och skapa nästan likadana typer.
00:09:51
Då vill jag ha ordning.
00:09:53
Så det blir nåt så här, antingen gör jag det skitjobbigt, eller så vill jag inte ha det alls.
00:09:57
Ja, exakt. Det där har jag återkommit till.
00:10:00
Det känns lite motsägelsefullt för mig att säga.
00:10:03
Men jag tycker typ att TypeScript kräver mer disciplin än JavaScript.
00:10:09
Även fast det kanske borde vara tvärtom.
00:10:13
Eftersom TypeScript är typat så borde det krävas mindre disciplin för att följa och koda det.
00:10:22
Men jag tycker att det krävs mer disciplin att skriva TypeScript.
00:10:27
Det är så lätt att det går lite överbord med hur många typer man skapar, hur de ser ut och hur de används.
00:10:34
Du säger att det blir duplicerade typer som finns på lite olika ställen.
00:10:38
Det känns som att TypeScript kräver ganska mycket överblicken över hur allt ska funka och hur allting hänger ihop för att det ska bli bra i slutändan.
00:10:49
Ja, och man får ju en väldigt tydlig feedback på ett tidigare misstag.
00:10:57
Alltså, säg att man sitter och skapar upp någonting och sen så är man såhär, är det en optional eller är det en null, jag vet inte.
00:11:02
Så väljer man någonting och så valde man fel och sen så kommer det med en liksom resten av resan och ska du ändra det, då får du ändra på jävla massa ställen kanske liksom.
00:11:14
Och det är ju såklart att det kanske motverkar buggar som du kanske hade haft utan det.
00:11:22
Men det blir en väldigt tydligt kvitto på att här tänkte du fel en gång i tiden och nu gör det lite ont att fixa det.
00:11:29
Ja, nämen exakt. Jag håller verkligen med om att det finns de här nackdelarna.
00:11:36
Eller vad man ska säga att det är.
00:11:39
Det känns som ett väldigt stort beslut att välja att köra TypeScript.
00:11:45
Just för att det finns så mycket för- och nackdelar med det.
00:11:47
Det jag har kommit fram till, som jag tror att jag har landat i efter att ha kört det
00:11:52
i några år nu i alla fall, är ju just det att
00:11:54
vid refaktoreringar till exempel så hjälper det ju extremt mycket om det är bra typat.
00:12:02
Och där har ju svängt väldigt mycket. Jag är ju dotnetare i grunden om man tänker tillbaka till jag började koda professionellt.
00:12:10
Men där tyckte jag också att det var jobbigt med typer.
00:12:16
"Fan vad jobbigt det blir med alla klasser och grejer, och så ska de kopplas samman och grejer och så här."
00:12:21
Fast det som jag tror är skillnaden är att de språken är ju också objektorienterade.
00:12:27
Vilket gör att det blir ytterligare ett lager på.
00:12:31
Medan jag tycker att TypeScript blir en perfekt balans för mig.
00:12:36
Det är ett dynamiskt språk som inte är objektorienterat utan prototypbaserat.
00:12:42
Men där du fortfarande lägger på ett litet lager av typer ovanpå.
00:12:47
Och där tycker jag att det finns en gyllene medelväg som funkar extremt bra.
00:12:54
när man har den här disciplinen som vi pratade om, att typerna inte springer iväg åt alla håll och kanter,
00:13:00
och att man inte skriver jätteavancerade typer, utan man försöker verkligen hålla det basica.
00:13:04
Vi typar upp hur våra objekt ser ut som max, och vi försöker inte göra superavancerade grejer.
00:13:15
Nej, där håller jag med, det är ju inte lika tungt som ett objektorienteringsprojekt.
00:13:24
Jag kommer ju från Java hållet, och det är ju väldigt mycket boilerplate och mycket som händer.
00:13:32
Det är samma typ av problem där, du får äta upp ett misstag och det är optional.
00:13:37
Det är typer som måste vara rätt och hålla tungan rätt i mun.
00:13:41
Jag tror att det som jag har svårt för är att jag kanske gick till Javscript för att jag fann det lite charmigt med cowboy hacks-grejen.
00:13:55
Att det var så himla lätt och snabbt.
00:13:59
Och på något sätt så känns det som att TypeScript ibland rånar mig på det.
00:14:05
Här igen, missförstår du inte, jag ser fortfarande poängen med det, klart i ett projekt där det ska refaktoreras eller det är många som ska jobba på samma eller man ska lämna över, jag ser ju poängen med det, jag tycker inte det är konstigt, men jag tycker det är lite mindre charmigt att jobba med.
00:14:27
Ja, men det blir liksom, jag har verkligen svårt att komma över den här grejen med att man fastnar mycket i, okej men vad är det för typer i compile time och vad är det för typer i run time och när slår den här typen och det blir liksom en enorm tröskel ibland
00:14:54
Såklart beroende på vilket projekt man har, hur mycket typen man har, hur lång tid det tar att bygga.
00:14:59
Men kanske att man bygger någonting och sen får man vänta in att editorn ska hitta felen och sen så får man error på det och då bygger det inte och då får man inte upp någonting i gränssnittet och så får man gå tillbaka och sen så till slut kanske man sätter ignore på allting och sen får man gå tillbaka och ändra det.
00:15:17
Det blir ju en tröskel som är mycket större bara.
00:15:22
Säkrare, ja, men den är ändå där.
00:15:26
Ja, absolut. Jag tycker du är inne på en bra grej med det här.
00:15:28
Typescript är ju inte ett typat språk i den månen att det är garanterat att det som händer i runtime
00:15:40
är samma som i compile time, eller vad vi ska kalla det.
00:15:46
Så det finns ju definitivt den här risken att du har typat att den här typen ska komma från ett API och så kommer en annan typ.
00:15:51
Och då betyder det helt plötsligt inte att dina typer är någonting längre.
00:15:54
Nej.
00:15:55
Och det är ju definitivt en nackdel med det.
00:15:59
Men jag tror att det är också svårt att komma ifrån det när du kör på webben.
00:16:03
Du kan ju inte typa.
00:16:06
Nu finns det såklart GraphQL där du typar saker och säger vad det kommer från ett API.
00:16:11
Men du kan aldrig vara helt säker på att det kommer komma exakt rätt typ.
00:16:16
För att det skulle kunna vara att det ska skickas en streng, men det kommer en siffra till exempel.
00:16:20
- Ja, det blir ju på något sätt mer som developer experience bara.
00:16:27
Det är ju klart alla språk, annars skulle vi skriva binärkod.
00:16:31
Men det blir kanske mer som DevTools än någonting annat.
00:16:39
Jag såg någon artikel från, jag kommer inte ihåg vem det var nu, som argumenterade för att de tyckte inte om TypeScript jättemycket.
00:16:47
De gillade inte att skriva upp sina typer och gillade inte att göra en massa annat.
00:16:51
Men de älskade det andra som kom med TypeScript, dvs. Autocomplete och automatiska importer och mycket sånt där som hela TypeScript-motorn hjälper till med.
00:17:01
till med. De körde typeskript i sina projekt, men de skrev inga typer överhuvudtaget.
00:17:07
Bara för att få det andra runt omkring. Och de tyckte att det här är det bästa sättet att använda typeskript på.
00:17:12
- Ja, det är ju såklart, det ger ju jättemycket. Jag förstår det också. Jag förstår att det här motvilla inom mig
00:17:24
Jag och mig egentligen logiskt sett inte har belägg för det för att jag ser det är mycket förenklare mitt arbete.
00:17:31
Det är mer som du säger, autoimporter, det är typer och du kan faktiskt kolla vad det är för någonting någon förväntar sig att få in som parametrar eller ger tillbaka.
00:17:40
Alltså det är klart det är för enklare arbetet, men det är även någon slags barnslig, liten cowboy-hackskodare i mig som är lite grinig bara.
00:17:52
Kombinerat med att jag inte förstår TypeScript ordentligt.
00:17:57
Och det jag varit inne på förut, jag tycker det är väldigt svårt att lära sig TypeScript.
00:18:00
För det är på något sätt att du har antingen den jättegrundläggande nivån, eller så har du den jätte, jätte komplexa nivån.
00:18:09
Jag skulle känna att jag behöver någonting som täcker det här hålet emellan.
00:18:14
Jag har inte riktigt lyckats göra det än, känner jag.
00:18:17
- Nej, jag håller med. Jag tycker också att typgifter är svårt att komma in i.
00:18:24
Jag har lärt mig lite grann av att sitta med det, men det är som sagt,
00:18:28
att bara läsa dokumentationen är ofta svårt, för det är ofta ganska abstrakta
00:18:32
termer och terminologi. Det är mycket som kommer från funktionell programmering.
00:18:38
När de pratar om unions och discriminated unions och intersections.
00:18:41
Det är mycket teori bakom som man nog skulle ha mycket nytta av när man lär sig det.
00:18:48
Och den teorin har ju verkligen inte jag.
00:18:52
- Nej, alltså...
00:18:57
Den har väl jag någonstans som är en återspegling av gamla Venn-diagram
00:19:05
och ångest på mattelektioner.
00:19:10
Men allt är på något sätt implementerade i olika.
00:19:16
Jag känner verkligen att jag saknar den här grundläggande delen
00:19:21
och jag har väldigt svårt att hitta den.
00:19:23
Jag har ändå lagt lite tid på att försöka hitta lite bloggposter
00:19:27
eller tutorials eller läsa på eller läsa dokumentationen.
00:19:30
Jag känner verkligen som att det är någonting i mitten som saknas.
00:19:34
saknas. Det går för fort till, ni vet ju att det funkar så här, så då behöver jag bara beskriva den här lilla lilla delen.
00:19:40
Då behöver det big picture, the whole picture.
00:19:45
- Ja, det jag känner är att ibland har jag lagt på någon liten pusselbit. Nu kommer jag inte ihåg om det är just den här termen som beskriver det.
00:19:54
Det kommer jag att beskriva strax.
00:19:55
Men det här som jag pratade om med "discriminated unions"
00:19:58
tror jag är att...
00:20:00
Någonting som jag i alla fall tycker är sjukt nice
00:20:04
som jag använder i ett hobbyprojekt nu för att typa saker på ett jävligt smidigt sätt.
00:20:08
Men det är typ att säga att...
00:20:10
Säg att du har ett objekt som har typ proppen "name" och "type"
00:20:18
Och om typ är A, då kommer den också ha en till property som är något annat.
00:20:32
Så om typ är A, då kommer den ha name, type och foo.
00:20:37
Gud, jag kommer inte på något bra konkret exempel nu, så vi får slå ut med det här.
00:20:41
- Alltså, cat? - Jag kommer inte på något bra som bara katter har just.
00:20:46
Men typ är djur och sen är det en katt.
00:20:54
Super konkret exempel.
00:20:56
Kör på a och fo, snälla.
00:21:04
Vi har ett vanligt objekt, vi har ett name som är en sträng, vi har en type som är en sträng
00:21:10
och sen har vi en foo som också är en sträng.
00:21:16
Foo kommer bara användas om type är A.
00:21:20
Om typ är B kommer foo aldrig användas.
00:21:23
Då kan man typ typa det här med det här discriminated unions, tror jag det heter. Det kan vara vanliga unions också men jag tror att det är det som är discriminated.
00:21:30
Då kan du typa och säga att om typ är A då finns foo-propertyn också.
00:21:38
Och är typ inte A då finns inte foo-propertyn.
00:21:41
Det tycker jag är sjukt nice när man kan typa det baserat på värden.
00:21:50
Det är väl en av få avancerade grejer med typ.
00:21:53
Jag har plockat upp det för att jag vill ta upp det som ett konkret exempel.
00:21:56
Men det har ju tagit lång tid att förstå vad fan som händer.
00:22:00
Ja, alltså sånt där gör mig ju lite upprörd också för att det blir till exempel som i Union Types.
00:22:07
Säg att om jag har det här attributet som ett objekt och det kan vara av den här typen, eller den här typen, eller den här typen.
00:22:14
Det är väl Union Types liksom.
00:22:16
Ja, exakt.
00:22:17
Och så ska man använda det på något sätt.
00:22:19
Då är det alltid någon bugg eller något som gör att det inte funkar.
00:22:23
Eller någonting som själva linten uppfattar som fel.
00:22:27
Och sen så sitter man där i skiten.
00:22:29
Ja, det har ju hänt relativt ofta.
00:22:33
Typescript skriker på en och så öppnar man felmeddelandet.
00:22:35
Och man bara "Aha, det var 300 rader i felmeddelandet".
00:22:38
Och man bara "Ah, okej, det är bara att scrolla".
00:22:41
Nu har jag bara lärt mig att man ska scrolla längst ner och kolla vad det står där.
00:22:44
Men det är fortfarande lite avskräckande att när man hamnar där
00:22:49
Då hade man bara "jag gjorde typ ingenting i TypeScript och nu skriker den redan på mig".
00:22:52
Ja, men just de...
00:22:55
Det blir så här, okej, men jag försöker använda Union Types, jag tycker jag använder den på sätt som det ska vara.
00:23:03
Men det är någonting med det jag försöker använda det i som inte lirar.
00:23:08
Och det skulle faktiskt kunna vara ett sätt om man skriver till TypeScript som inte lirar med det här andra libet eller tekniken jag vill använda.
00:23:16
Och det går inte att lösa.
00:23:18
Då blir det helt plötsligt så här, okej, då ska jag bara hoppa över det och vad använder jag då typerna till?
00:23:24
Och så blir jag lite arg.
00:23:26
Ja, men det förstår jag.
00:23:28
För det är ju också ett annat tem som du nämnde, att du använder något som inte är skrivet i TypeScript.
00:23:34
Och så helt plötsligt så har du inga typer på de grejerna och så måste man antingen skapa upp några egna declaration-filer själv
00:23:40
och så blir det ännu mer boilerplate och man bara, nej men det här, jag orkar inte TypeScript.
00:23:45
(skratt)
00:23:47
Vad är det för det?
00:23:49
Finns det stunder då man blir ledsen i ögat?
00:23:54
Det håller jag 100% med om.
00:23:57
Jag är också verkligen där.
00:23:59
Ibland river man sitt hår över TypeScript.
00:24:03
Samtidigt tycker jag ändå att det är värt det i längden.
00:24:07
Jag kör TypeScript på allt jag gör nu.
00:24:09
Även om det är något litet hobbyprojekt.
00:24:11
projekt så kör jag TypeScript för att jag tycker att det ger mig så pass mycket.
00:24:16
Sen kanske jag inte skriver superavanserade typer och TypeScript liksom
00:24:20
införar ju mycket själv vad det är för typer.
00:24:23
Så då behöver man inte göra så mycket.
00:24:24
Men just för att liksom, det är så skönt bara att den har den där och att den
00:24:28
skriker på med enkla fel som att nu försöker du jämföra en sträng och en siffra typ.
00:24:32
Alltså i mina barnsliga öron så låter ju det där helt barockt.
00:24:38
Men det var å andra sidan ganska länge sedan jag gjorde ett eget hobbyprojekt.
00:24:43
Vem vet vad jag skulle använda idag?
00:24:45
Ja, det förstår jag.
00:24:47
Det kanske inte är på exakt alla projekt.
00:24:49
Jag har ju ett endagsprojekt, det kanske inte är i TypeScript.
00:24:51
Men när jag har något som har lite, lite långsiktighet i sig, då
00:24:56
då vill jag absolut helst skriva det i TypeScript.
00:25:01
Det känns som att det är en extra lager med trygghet som jag betalar ett litet
00:25:06
Precis i frustration för att ha.
00:25:08
Ja, men det kan jag förstå. Speciellt om det är något man plockar upp.
00:25:12
Jag fick bara upp en bild av att man är på ett endags hackatorn och så lägger man fyra timmar på ett typeskriftspel.
00:25:20
Nu har jag skrivit jävligt bra typer här så jag ska visa på min demo.
00:25:24
Det är så jävla safe och sen så blir det fel i runtime ändå.
00:25:30
Exakt. Ja, det skulle kunna hända. Har säkert hänt.
00:25:35
Men jag förstår ju den grejen, som du säger, mer långsiktiga projekt där du kanske verkligen vill förvalta det, plocka upp det senare och det kommer ju ge dig mer hjälp också kring hur tänkte jag här, vad är lättare att härleda fel och buggar möjligtvis.
00:25:54
Jag förstår ju poängen med det, men jag kommer inte överens med nyttan.
00:26:01
Det har fortfarande något i mig. Jag blir nästan lite upprörd när jag tänker på det.
00:26:07
Jag vet inte varför.
00:26:11
- Det är något inneboende i dig som hatar Taipei.
00:26:16
- Ja, jag vet inte. Det kanske är bara någon jättekonstig grinning.
00:26:22
Jag kunde fastna på saker som jag jobbat för att släppa, men typ det här semikolon eller inte semikolon.
00:26:31
När man gick från snake case till camel case för att jag kom från Python och C++.
00:26:38
Och liksom små skitsaker. Så det känns som att jag är lika upphängd på TypeScript som det med de grejerna.
00:26:47
Men det är någonting som fortfarande känns svårt.
00:26:50
Men jag tror ju, det känns ju som att det är liksom, mycket är TypeScript som är framtiden.
00:26:57
Ja det är väl lite den bilden jag har också.
00:27:01
Man kan ju tänka sig, det finns ju lite alternativ.
00:27:04
Vi kan ju titta på Flow som finns, men där är det väl i stort sett väldigt få stora projekt som kör nu.
00:27:09
Det är väl typ React-kodbasen som kör Flow fortfarande.
00:27:13
Men det är väl också för att Flow har väl Facebook från början om jag inte minns helt fel.
00:27:18
Ja, jag tror det är deras.
00:27:20
Men sen finns det ju till exempel så kommer det alternativ som i Blazor till exempel.
00:27:24
Som inte kanske riktigt är samma sak, men där är det ju liksom att du skriver C# istället.
00:27:29
Som sen i sin tur blir WebAssembly.
00:27:32
Och då att du liksom har den typningen när du väl skriver i C# så att säga.
00:27:39
Men det är inte riktigt samma sak som TypeScript, det är fortfarande JavaScript som TypeScript-hatarna hatar att man säger.
00:27:49
Men jag tycker det är ett längre steg bort från JavaScript än vad TypeScript är.
00:27:55
Ja, för det finns ju andra språk, det finns ju ELMO, det finns ju att man drar in RAM, men jag har inte jobbat med det så att allt blir funktionellt.
00:28:04
Men just när man pratar typ att bygga stora JavaScript-projekt känns det som att TypeScript är verkligen...
00:28:11
Alltså det känns som att... och nu kanske jag lever i en bubbla, men det känns som att det är nästan ingen kvar som kör JavaScript
00:28:22
bara utan tanken på att någon gång gå mot TypeScript.
00:28:27
Ja, kanske lite bubbla. Jag har ändå stött på folk som är så här "vi kommer aldrig gå till TypeScript".
00:28:33
Om man tittar på ett stort projekt, om vi pratar Open Source, då finns det 3GES, som är det här 3D-libbet.
00:28:40
Där är de som har intaginat det väldigt anti-typescript.
00:28:45
Varför? Jag vet inte riktigt. De är väldigt anti väldigt mycket.
00:28:51
De vill verkligen att 3GES ska vara så här, droppa in en scripttag och sen funkar det bara.
00:28:57
Vilket du kan göra på massa olika sätt, men de är väldigt anti att du inte ska kunna köra import och sen en modul från Tree, utan du måste importera hela Tree.
00:29:06
Och det är mycket för att de...
00:29:07
Alltså det är mycket så här...
00:29:08
Mycket programmerare som inte bygger hemsidor, utan mer så här kreativ programmering. Alltså som bara gör saker i Tree.
00:29:17
Som kanske inte sitter och skriver kod på samma sätt som vi tänker när vi pratar om React och allting sånt.
00:29:25
Så det är väl lite därifrån de har den synpunkten.
00:29:28
Men det finns nog ett gäng stora projekt som är anti-typescript.
00:29:32
Men sen tror jag, som du säger, att väldigt många går emot typescript för att
00:29:39
när man gör det för bibliotek och ramverk så ger det så mycket för integrationen.
00:29:44
Att du kan få att det blir lite självdokumenterande
00:29:47
istället för att det behöver dokumentation på allt.
00:29:50
Ja, och jag menar det blir ju hela, om man kör hela stackar också typade, det är ju bättre liksom.
00:30:01
Ja, absolut. Och tittar man på mitt förra uppdrag då hade vi ju GraphQL och sen genererade vi upp våra TypeScript-typer från GraphQL.
00:30:10
Så att när vi skrev våra mutations och queries så kunde vi köra ett kommando och så ploppade upp en liten TypeScript-fil med typen i.
00:30:16
Och så kunde man bara importera den där man ville använda den.
00:30:18
Och det var ju sjukt smidigt.
00:30:22
Det är en av de bättre utvecklarupplevelser jag haft när man ska integrera med ett API.
00:30:27
- Ja, för att nu har vi det projektet jag sitter på.
00:30:32
Det är ju liksom att vi egentligen skapar upp typerna i backend.
00:30:37
Och sen för API-et och sen så kopieras de över till
00:30:46
Att använda samma typer i frontend. Så det är alltid de typerna i backend som gäller när man vill använda lastmodeller i frontend.
00:30:55
Inte riktigt lika fancy automatiserat, det kanske är nu.
00:31:03
Men ändå principen att man gör typerna på ett ställe är ganska nice.
00:31:08
Ja, jag håller verkligen med. Det blir ju samma sak i mitt fall.
00:31:13
Bortsett att när vi skriver mutations och queries så blir det typer också.
00:31:18
Men annars kommer ju typerna i GraphQL från back-end.
00:31:21
Så det blir ju i stort sett samma sak.
00:31:24
Men har du inte mer just nu på TypeScript, eller det är säkert att det dyker upp mer,
00:31:32
Du kanske lär oss något annat coolt fancy avancerat TypeScript typ som man kan göra.
00:31:39
Kanske inte ha någon val.
00:31:41
Det är väl ofta så man lär sig nu på tiden.
00:31:47
Ja, det var ju trevligt att få återbesöka sin så här barnsliga "jag vill inte"-känsla kring TypeScript.
00:31:55
Ja, det känns som om TypeScript litar dinemisys.
00:31:59
Ja, jag vet inte om vi någonsin kommer att bli vänner.
00:32:04
Jag vill bara hoppas, harva på liksom.
00:32:06
Jag tror att vi pratade om TypeScript för ungefär ett år sedan, så nästa år kanske vi blir ny-revisit.
00:32:12
Och sen så får vi se om du tycker bättre om TypeScript då eller inte.
00:32:17
Ja, jag vill göra så.
00:32:19
Men tack till alla som lyssnar. Vi finns som vanligt på Twitter om man vill någonting.
00:32:26
Det finns länkar i beskrivningen. Ge oss gärna en recension på iTunes som vi tjatar om i varje avsnitt.
00:32:31
Vet inte riktigt varför, men det känns bra.
00:32:34
Vi säger så till om två veckor igen, så hörs vi då.
00:32:38
- Det gör vi. Hej då! - Bye bye!
00:32:40
[Outromusik]
Tillbaka upp