• 4
  • 5
2025-03-16, 14:25
  #49
Medlem
Citat:
Ursprungligen postat av trellen
Det största problemet jag ser med TypeScript är att utvecklare generellt är mindre produktiva i det samt att det orsakar mer buggar. Och nu kanske någon tänker: "va? hela marknadsföringen kring TypeScript är att det ska generera mindre buggar och öka produktiviteten". Problemet med varenda research paper jag har läst är att:

1. Ofta är det Microsoft eller någon organisation som tjänar pengar på TypeScript som står bakom. Oberoende undersökningar är extremt viktigt för att över huvud taget kunna lita på siffrorna.

2. Det har varit ett ett litet urval. Det kommer alltid finnas teams, organisationer som lyckas bättre i diverse programmeringsspråk än andra. Det betyder inte att språket är bättre eller sämre.

3. Antalet buggar tar inte hänsyn till tiden eller kompetensen. Tar det 50% av tiden att programmera ett system i JavaScript och sedan 20% på buggar är det bättre än 100% i JavaScript och 10% på buggar.

När jag själv gjorde research så hittade jag denna som den mest kompletta undersökningen: https://arxiv.org/abs/2203.11115

Analyserar man siffrorna mer på djupet, förutom att TypeScript skapar mer buggar överlag per tidsenhet så ser man tydligt att TypeScript är betydligt värre:

1. TypeScript lurar utvecklaren att det är typat. TypeScript har inga "typer". Annotations är inte samma sak som typer. Typer kan du lita på. Annoteringar aldrig.
2. Personer som saknar större kunskaper i ECMAScript tror att "det ser ungefär ut som Java/C++/C#" och tillsammans med kompilatorn tror att koden har ett visst beende. Det stämmer ofta, men inte alltid.
3. Buggar uppstår sakta men säkert p.g.a utvecklaren i sin naivitet och inkompetens trodde sig kunna lita på annoteringar.

Detta samtidigt med att all utveckling i TypeScript går betydande långsammare än motsvarande utveckling i JavaScript. Vissa företag går utvecklingen 60% långsammare medan andra är det bara 20%. Men långsammare går den definitivt. Detta där dessutom det ofta genererar mer buggar också, så företaget betalar för långsammare utvecklingshastighet samt mer buggar. Helt otroligt.

Ett annat problem är att det kommer troligtvis aldrig bli standard JavaScript heller. Sista mötet vid type-annotations förslaget i ECMAScript committee(n) gick det inget vidare. Microsoft killarna Gil & Daniel har misslyckas med att ge ett enda bra argument att det ska bli standard. Så själva tekniken är en säkerhetsrisk i sig själv också. Man vill som företag att programmeringsspråket ska vara någorlunda framtidssäkert. Det är inte TypeScript.

Slutsatsen är att om man vill köra typat så kompilerar man koden till WebAssembly, som är typat eller så kör man JavaScript när det gäller web. TypeScript är förbjudet på företaget jag arbetar på. Det saknar fullständigt något syfte.

Vad jämför du med?

Det är troligen så att det tar längre tid att skriva ett program i Typescript jämfört med att trycka ut det snabbt i JS men då få ett antal buggar.

Att utveckla i TS - tar längre tid men det blir färre buggar i runtime.

Den enda källan du har säger dessutom inte det du påstår.

https://arxiv.org/abs/2203.11115

Citat:
The analysis indicates that TS apps exhibit significantly better code quality and understandability than JS apps. Contrary to expectations, however, bug proneness and bug resolution time of our TS sample were not significantly lower than for JS


Citat:
Our results indicate that the perceived positive influence of TypeScript for avoiding bugs in comparison to JavaScript may be more complicated than assumed. While using TS seems to have benefits, it does not automatically lead to less and easier to fix bugs.

Förstår inte hur du kan läsa ovanstående och sen påstå att det är fler buggar i JS-projekt jämfört med TS-projekt.
Citera
2025-03-17, 18:02
  #50
Medlem
Retropropagations avatar
Ett litet tips på ett sidoprojekt i TypeScript types:

Det borde vara trivialt enkelt att göra nedanstående för Wolfenstein. Hur svårt kan det vara...

Letade efter något annat... Och hittade det här:

https://www.youtube.com/watch?v=0mCsluv5FXA

Citat:
TypeScript types can run DOOM
Rendering the screen at 320p took 12 days (*)
It was a brutal year long journey of 18 hour days...
But I'm not one of those fancy 10x developers. Instead of a master of craftsmanship, I'm more a master of close enough manship
Feedback från "The GOAT":

https://www.youtube.com/watch?v=5506X2xioi0

Citat:
showing TypeScript's creator DOOM | Anders Hejlsberg | TypeScript Showcase #11

(*)
Troligen finns det nuförtiden en 10x fix:

(FB) TypeScript
Citera
2025-03-18, 16:16
  #51
Medlem
Retropropagations avatar
Citat:
Ursprungligen postat av Retropropagation
Och nu har Anders Hejlsberg gjort det igen! (*) Den här gången 10x!

Hur gjorde han?
Bytte programspråk

Till vilket programspråk?
Go

Varför inte till C++?
Varför inte till Rust?
Och den stora frågan: Varför inte till hans eget C#?

Det är fler som har funderat...

https://github.com/microsoft/typescr...iscussions/411

Citat:
Why Go?

Tips: Många inlägg i tråden... Om du har ont om tid, rekommenderar jag att du söker upp och läser inlägget som börjar med:

Citat:
Our decision to port to Go underscores our commitment to pragmatic engineering choices. Our focus was on achieving the best possible result regardless of the language used. At Microsoft, we leverage multiple programming languages including C#, Go, Java, Rust, C++, TypeScript, and others, each chosen carefully based on technical suitability and team productivity. In fact, C# still happens to be the most popular language internally, by far.
Citera
2025-03-19, 19:02
  #52
Medlem
Retropropagations avatar
En riktigt, riktigt bra intervju:

https://www.youtube.com/watch?v=NrEW7F2WCNA

Citat:
LIVE: Anders Hejlsberg on TypeScript’s Go Port
Citat:
Introduction of Anders Hejlsberg [00:04]
TypeScript Porting to Go [00:49]
CLI Release and Parity [02:45]
Unknown Unknowns [05:11]
WASM Performance [10:09]
Performance Gains [14:51]
Parallelization [15:10]
Future Optimizations [28:33]
Erasable Syntax [35:31]
Breaking Changes [41:04]
Performance Budget [45:22]
Regrets [49:06]
Enums [50:38]
ES Build [54:25]
Following the Project [01:01:09]
Citera
2025-04-17, 00:05
  #53
Medlem
Retropropagations avatar
Citat:
Ursprungligen postat av Retropropagation
Och nu har Anders Hejlsberg gjort det igen! (*) Den här gången 10x!

En lägre hängande frukt och bara 5x:

https://x.com/PreslavMihaylov/status...28243434668245

Citat:
Someone on the Go team decided to take a "quick stab" at fixing a small bug in Go's escape analysis, resulting in a 5x increase in typescript performance.

Citat:
link to github issue

https://github.com/golang/go/issues/...ent-2719445786

Citat:
To clarify - this is a performance improvement in the time it takes to compile typescript

=> 10x * 5x <> 50x...
Citera
2025-08-12, 13:34
  #54
Medlem
Citat:
Ursprungligen postat av Ehandel
TypeScript är för främst C#-programmerare som kommer till JavaScript. Det blev en enorm hype några år sedan med JavaScript. Alla möjliga ramverk togs fram. Stor del av jobbmarknaden gick över till JS. Därför gick flera andra programmerare över dit. Många av dem hade erfarenhet av C# men även andra språk. Av någon oklar orsak rövknullas deras hjärna när de inser att variabler i JavaScript kan byta datatyp. Därför försökte de nu att göra om JavaScript till C#, vilket är helt idiotiskt.

Har använt TypeScript och det är bara blä. Kan lika gärna gå över till C# om jag ska hålla på med sådant. Jag programmerar både i JavaScript och C# och tycker de ska hållas isär. TypeScript är JavaScript fast onödigt krångligare. Notera: inte krångligt, men krångligare.

Här i Schweiz används TypeScript väldigt lite. Folk föredrar att antingen använda C# eller JavaScript. En hybrid av dessa är bara total onödigt. TypeScript-personer är samma typ av person som sitter och handlar shitcoins, använder sig av React, Next och alla andra ramverk, och sysslar med Shopify-sidor. D.v.s. 16-22 åriga amerikanska vita killar som tror de är "something of significance". Ord som "AI" används i varannan mening av dem när de pratar.

Sen vill jag påpeka att statistik med TypeScript från bl.a. GitHub är missvisande. Det är p.g.a. ren och vanlig vanilla JavaScript funkar utmärkt i TypeScript. Du kan göra en TypeScript-fil men bara programmera i vanlig JavaScript. Samtliga rader kod i filen kommer reggas som "TypeScript" på GitHub enbart utifrån filtypen. Om du faktiskt kollar raderna med specifikt TypeScript-kod är det betydligt lägre score. Då ramlar TypeScript ner till 12:e mest använda programmeringsspråket.
Skulle tycka det var ganska svårt skriva ett större program utan ts.
Citera
2025-08-30, 19:41
  #55
Medlem
mhns avatar
Jag tycker TypeScript är en aning svårt att lära sig. Ta bara en sak som generics. Följande kodsnuttar är väldigt simpla exempel på generics, men för mig så är det segt att tolka vad de gör. Är det bara jag, eller är det fler som känner likadant?

Kod:
let f = <T, K extends T>(arg: T): K => arg as K;

Kod:
function f2<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

Kod:
function f3<T, K>(arr: T[], mapper: (item: T) => K): K[] {
  return arr.map(mapper);
}

Kod:
function f4<T, K extends keyof T>(arr: T[], key: K): T[K][] {
  return arr.map(item => item[key]);
}
Citera
2025-09-13, 14:18
  #56
Medlem
Cyborg2030s avatar
Citat:
Ursprungligen postat av mhn
Jag tycker TypeScript är en aning svårt att lära sig. Ta bara en sak som generics. Följande kodsnuttar är väldigt simpla exempel på generics, men för mig så är det segt att tolka vad de gör. Är det bara jag, eller är det fler som känner likadant?

Kod:
let f = <T, K extends T>(arg: T): K => arg as K;

Kod:
function f2<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

Kod:
function f3<T, K>(arr: T[], mapper: (item: T) => K): K[] {
  return arr.map(mapper);
}

Kod:
function f4<T, K extends keyof T>(arr: T[], key: K): T[K][] {
  return arr.map(item => item[key]);
}
Att bygga egna generics är lurigt även för en senior gubbe som mig som har använt det i 10 år. Det beror väl på att det blir en ny abstraktionsnivå när vi bestämmer typerna senare. Det gör koden ganska obegriplig vid en första anblick. Som en matematisk ekvavtion med många x, y, z.

Tips: Debugga koden och inspektera hur den opererar på dina typer. Det blir enklare med konkreta exempel. Eller föreställ dig koden med ifyllda exempel.

t.ex. CartPart -> EnginePart -> Piston.

f2<T, K extends keyof T>(obj: T, key: K): T[K]

Kan användas som en typad map / dictionary. I stället för (js)
någonting['vad som helst']
kan du vara mer precis:
myCar[ enginePartSymbol ]
Tillämpningen gör klientkoden (merparten av din kod) säkrare och tydligare.

Eller fråga en AI om den kan förklara koden.
De är gansk bra på att förklara klurig kod.
Citera
  • 4
  • 5

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in