𝗜𝗻𝘁𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝘁𝗼 𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻 𝗧𝘆𝗽𝗲𝘀

TypeScript-ൽ എല്ലാത്തിനും ടൈപ്പുകൾ (types) ആവശ്യമാണ്. ഇതിൽ നിങ്ങളുടെ ഫങ്ക്ഷനുകളും ഉൾപ്പെടുന്നു. ഇൻപുട്ടുകൾക്കും ഔട്ട്‌പുട്ടുകൾക്കുമായി നിങ്ങൾ ടൈപ്പുകൾ നിർവചിക്കേണ്ടതുണ്ട്.

Function Syntax

ഇൻപുട്ട് ടൈപ്പുകളും ഔട്ട്‌പുട്ട് ടൈപ്പും താഴെ പറയുന്ന രീതിയിൽ നിങ്ങൾക്ക് നിർവചിക്കാം:

function add(x: number, y: number): number {
  return x + y;
}

TypeScript 'type inference' ഉം ഉപയോഗിക്കുന്നു. ഔട്ട്‌പുട്ട് ടൈപ്പ് എപ്പോഴും എഴുതേണ്ടതില്ല. കംപൈലർ അത് നിങ്ങൾക്കായി കണ്ടെത്തിത്തരും.

നിങ്ങളുടെ ഫങ്ക്ഷൻ വ്യത്യസ്ത ടൈപ്പുകൾ റിട്ടേൺ ചെയ്യുന്നുണ്ടെങ്കിൽ, TypeScript അത് കൈകാര്യം ചെയ്യും. ഉദാഹരണത്തിന്, ഒരു ഫങ്ക്ഷൻ ഒരു നമ്പറോ അല്ലെങ്കിൽ ഒരു സ്ട്രിംഗോ ആണ് റിട്ടേൺ ചെയ്യുന്നതെങ്കിൽ, കംപൈലർ രണ്ടും തിരിച്ചറിയും.

Special Return Types

  • void: ഒരു ഫങ്ക്ഷൻ ഒന്നും റിട്ടേൺ ചെയ്യാത്തപ്പോൾ ഇത് ഉപയോഗിക്കുക.
  • never: ഒരു ഫങ്ക്ഷൻ എറർ (error) ഉണ്ടാവുകയോ പ്രോഗ്രാം നിർത്തുകയോ ചെയ്യുമ്പോൾ ഇത് ഉപയോഗിക്കുക.

Parameters

ഒരു ചോദ്യചിഹ്നം (?) ഉപയോഗിച്ച് നിങ്ങൾക്ക് പാരാമീറ്ററുകളെ ഓപ്ഷണൽ (optional) ആക്കാം.

function makeProfile(name: string, age: number, url?: string) {
  // code
}

നിങ്ങൾക്ക് ഡിഫോൾട്ട് വാല്യൂസും (default values) ഉപയോഗിക്കാം. ഇത് പ്രത്യേക ചിഹ്നങ്ങളില്ലാതെ തന്നെ ഒരു പാരാമീറ്ററിനെ ഓപ്ഷണൽ ആക്കുന്നു.

function makeProfile(name: string, age: number, url: string = "www.example.com") {
  return name + " visits " + url;
}

Callback Functions

ഫങ്ക്ഷനുകൾ വാല്യൂസ് (values) ആണ്. അവയെ ആർഗ്യുമെന്റുകളായി (arguments) പാസ്സ് ചെയ്യാം. ഒരു കാൾബാക്ക് ടൈപ്പ് നിർവചിക്കാൻ ഈ സിന്റാക്സ് ഉപയോഗിക്കുക:

function makePage(func: (n: string, a: number, u?: string) => string, param1: string, param2: number) {
  func(param1, param2);
}

കാൾബാക്കിലെ പാരാമീറ്ററുകളുടെ പേരുകൾ പ്രധാനമല്ല. ടൈപ്പുകൾ മാത്രമാണ് പ്രധാനം.

Arrays of Functions

നിങ്ങൾക്ക് ഫങ്ക്ഷനുകളുടെ ഒരു ലിസ്റ്റ് ആവശ്യമുണ്ടെങ്കിൽ, അവ ആ ഫങ്ക്ഷൻ ടൈപ്പിന്റെ ഒരു അറേയായി നിർവചിക്കുക.

function applyMath(funcs: ((a: number, b: number) => number)[], x: number, y: number) {
  // code
}

Rest Parameters

എത്ര ആർഗ്യുമെന്റുകൾ വേണമെങ്കിലും സ്വീകരിക്കുന്നതിന് സ്പ്രെഡ് ഓപ്പറേറ്റർ (spread operator) ഉപയോഗിക്കുക. ഇത് എല്ലാ ഇൻപുട്ടുകളെയും ഒരു അറേയിൽ സംഭരിക്കുന്നു.

function sum(...numbers: number[]) {
  // code
}

sum(1, 2, 3);

Source: https://dev.to/jsha/introduction-to-typescript-function-types-hin