TypeScript വിജയിച്ചു. അത് യഥാർത്ഥത്തിൽ നമുക്ക് നൽകിയത് ഇതാണ്.

ഇനി ആരും TypeScript ഉപയോഗിക്കുന്നതിനെക്കുറിച്ച് തർക്കിക്കാറില്ല. പുതിയ പ്രോജക്റ്റുകളിൽ ഇത് ഡിഫോൾട്ടായി ഉപയോഗിക്കുന്നു. ആ തർക്കം അവസാനിച്ചു.

ടൈപ്പിംഗ് പിശകുകൾ (typos) കണ്ടെത്തുക എന്നത് മാത്രമല്ല ഇതിന്റെ യഥാർത്ഥ മൂല്യം. അതിനേക്കാൾ എത്രയോ കൂടുതലാണത്.

ഒരു ഫങ്ക്ഷൻ സിഗ്നേച്ചർ (function signature) ഒരു ഡോക്യുമെന്റേഷൻ പോലെ പ്രവർത്തിക്കുന്നു. അത് ഒരിക്കലും കാലഹരണപ്പെടില്ല. കോഡിൽ മാറ്റം വന്നാൽ, കമ്പൈലർ ബിൽഡ് പരാജയപ്പെടുത്തും.

ഈ ഫങ്ക്ഷൻ ഒന്ന് നോക്കൂ:

function scheduleReminder(
  userId: string,
  at: Date,
  channel: "email" | "push" | "sms",
): Promise<ReminderId>;

ഇത് എങ്ങനെ വിളിക്കണമെന്ന് നിങ്ങൾക്ക് കൃത്യമായി അറിയാം. ഇതിന് എന്താണ് വേണ്ടതെന്നും ഇത് എന്താണ് തിരികെ നൽകുന്നതെന്നും നിങ്ങൾക്ക് അറിയാം. ചാനൽ എന്നത് മൂന്ന് പ്രത്യേക സ്ട്രിംഗുകളിൽ (strings) ഒന്നായിരിക്കണമെന്ന് നിങ്ങൾക്ക് അറിയാം.

പിന്നീട് നിങ്ങൾ ഒരു "slack" ഓപ്ഷൻ ചേർക്കുകയാണെങ്കിൽ, കോഡിന്റെ എല്ലാ ഭാഗങ്ങളും അപ്‌ഡേറ്റ് ചെയ്യാൻ കമ്പൈലർ നിങ്ങളെ നിർബന്ധിക്കും. എന്നാൽ ഒരു കമന്റ് (comment) വെറുതെ അവിടെത്തന്നെ ഇരിക്കുകയും നിങ്ങളെ തെറ്റിദ്ധരിപ്പിക്കുകയും ചെയ്തേക്കാം.

ടൈപ്പ് ഇല്ലാത്ത (untyped) കോഡിൽ, ഒരു ഫീൽഡിന്റെ പേര് മാറ്റുന്നത് പേടിപ്പെടുത്തുന്ന കാര്യമാണ്. നിങ്ങൾ സ്ട്രിംഗുകൾ തിരയുകയും എല്ലാം ശരിയാകുമെന്ന് പ്രത്യാശിക്കുകയും ചെയ്യുന്നു. എന്നാൽ TypeScript-ൽ, നിങ്ങൾ ടൈപ്പ് മാറ്റുന്നു. എന്തൊക്കെയാണ് തകരാറിലായതെന്ന് ഒരു 'to-do list' പോലെ കമ്പൈലർ നിങ്ങൾക്ക് നൽകുന്നു. ഇത് റീഫാക്റ്ററിംഗ് (refactoring) സുരക്ഷിതമാക്കുന്നു.

ടൈപ്പുകൾ AI-ക്കും സഹായകരമാണ്.

ഒരു AI മോഡൽ JavaScript-ൽ കോഡിന്റെ ഘടനയെക്കുറിച്ച് ഊഹിച്ചാണ് പ്രവർത്തിക്കുന്നത്. എന്നാൽ TypeScript-ൽ, ടൈപ്പ് എന്നത് ഒരു സ്പെസിഫിക്കേഷൻ ആണ്. എന്തൊക്കെ അനുവദനീയമാണെന്ന് AI-ക്ക് കൃത്യമായി അറിയാം. തെറ്റുകൾ പ്രൊഡക്ഷൻ ക്രാഷ് (production crash) ഉണ്ടാക്കുന്നതിന് പകരം എററുകളായി (errors) കാണപ്പെടുന്നു.

ടൈപ്പുകൾ ഒരു ഗാർഡ്‌റെയിൽ (guardrail) പോലെ പ്രവർത്തിക്കുന്നു. ഓരോ വരിയും കൈകൊണ്ട് പരിശോധിക്കുന്നതിന് പകരം ആത്മവിശ്വാസത്തോടെ AI കോഡ് ഉപയോഗിക്കാൻ അവ നിങ്ങളെ അനുവദിക്കുന്നു.

ഈ നിയമങ്ങൾ ഉപയോഗിച്ച് മികച്ച ടൈപ്പുകൾ എഴുതാം:

• പല ബൂളിയനുകൾക്ക് (booleans) പകരം യൂണിയനുകൾ (unions) ഉപയോഗിക്കുക. മൂന്ന് പ്രത്യേക ഫ്ലാഗുകൾക്ക് പകരം "loading" | "error" | "ready" പോലുള്ള ഒരു സ്റ്റാറ്റസ് ഉപയോഗിക്കുന്നതാണ് നല്ലത്. • നിങ്ങളുടെ ഡൊമെയ്ൻ ടൈപ്പുകൾക്ക് (domain types) പേര് നൽകുക. ഉദ്ദേശ്യം വ്യക്തമാക്കാൻ type Cents = number ഉപയോഗിക്കുക. • any ഒഴിവാക്കുക. പകരം unknown ഉപയോഗിക്കുകയും ടൈപ്പ് നാരോ (narrow) ചെയ്യുകയും ചെയ്യുക. • ഇൻഫറൻസ് (inference) പ്രവർത്തിക്കാൻ അനുവദിക്കുക. ഫങ്ക്ഷൻ സിഗ്നേച്ചറുകൾ പോലുള്ള അതിരുകൾ (boundaries) മാത്രം രേഖപ്പെടുത്തുക (annotate), ബാക്കിയുള്ളവ സ്വയം സംഭവിക്കട്ടെ.

TypeScript കോഡ്ബേസുകളെ (codebases) കർശനമായ കരാറുകളുടെ (enforced contracts) ഒരു കൂട്ടമായി മാറ്റി. ഈ കരാറുകൾ ഭയമില്ലാത്ത റീഫാക്റ്ററിംഗും വിശ്വസനീയമായ AI സഹായവും സാധ്യമാക്കുന്നു.

ബഗുകൾ തടയാനാണ് നമ്മൾ ടൈപ്പുകൾ ഉപയോഗിച്ചു തുടങ്ങിയത്. എന്നാൽ മറ്റെല്ലാറ്റിന്റെയും അടിസ്ഥാനമായതുകൊണ്ടാണ് നമ്മൾ അവ തുടർന്നും ഉപയോഗിക്കുന്നത്.

സ്രോതസ്സ്: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo