𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 𝗧𝘆𝗽𝗲𝘀 𝗗𝗲𝗺𝘆𝘀𝘁𝗶𝗳𝗶𝗲𝗱

TypeScript inategemea mfumo wa aina (type system). Kuimudu ni hatua yako ya kwanza ya kuandika kodi bora zaidi.

Aina za Msingi

TypeScript hutumia aina zinazofanana na za msingi (primitives) za JavaScript: • string: Kwa ajili ya maandishi. • number: Kwa ajili ya namba zote (namba nzima na namba za desimali). • boolean: Kwa ajili ya thamani za kweli (true) au si kweli (false).

Utabiri wa Aina (Type Inference)

Si lazima uandike aina kila wakati. Mara nyingi TypeScript hukisia aina kulingana na thamani unayotoa. Hii inaitwa inference.

Kanuni nzuri: • Ruhusu TypeScript itabiri aina kwa ajili ya vigezo vya ndani (local variables). • Andika aina wazi (explicit types) kwa ajili ya vigezo vya kazi (function parameters) na aina za kurudisha thamani (return types).

Arrays na Tuples

Arrays huhifadhi thamani nyingi za aina moja. • Mfano: let tags: string[] = ["ts", "js"];

Tuples ni arrays zenye urefu maalum na aina maalum kwa kila nafasi. • Mfano: let user: [string, number] = ["Ramesh", 31];

Aina za Muungano (Union Types)

Tumia aina za muungano (union types) wakati thamani inaweza kuwa zaidi ya aina moja. • Mfano: let id: string | number = "abc123";

Aina Maalum

Aina nne ambazo mara nyingi huwachanganya wanaoanza:

  1. any Hii inazima ukaguzi wa aina (type checking). Inafanya kodi yako ifanye kazi kama JavaScript ya kawaida. Itumie kama chaguo la mwisho kabisa.

  2. unknown Hii ni toleo salama la any. Inasema kuwa thamani inaweza kuwa chochote, lakini lazima ukague aina yake kabla ya kuitumia.

  3. void Itumie kwa kazi (functions) ambazo hazirudishi thamani yoyote.

  4. never Itumie kwa kazi ambazo hazimaliziki kamwe, kama vile zile zinazotoa makosa (errors) au zinazozunguka bila mwisho (infinite loops).

Muhtasari kwa ajili ya mtiririko wako wa kazi: • Tumia primitives kwa data nyingi. • Tumia inference ili kuweka kodi safi. • Tumia union types kwa viingizo vinavyobadilika (flexible inputs). • Epuka any. • Tumia unknown badala ya any unapokuwa na shaka.

Chanzo: https://dev.to/ramesh_s_a8f0867d239e927c/typescript-types-demystified-simple-types-special-types-and-type-inference-5bf0