React, Next.js, Node.js project အများစုကို GitHub မှာ ဖွင့်ကြည့်ရင် .js ဖိုင်တွေထက် .ts/.tsx ဖိုင်တွေက ပိုများနေတာ တွေ့ရပါလိမ့်မယ်။ TypeScript ဟာ Microsoft က တီထွင်ထားတဲ့ language ဖြစ်ပြီး JavaScript ကို အခြေခံထားတဲ့ superset တစ်ခုပါ — အသစ်တီထွင်ထားတဲ့ ကွဲပြားတဲ့ language မဟုတ်ဘဲ JavaScript syntax အပေါ်မှာ type-checking layer တစ်ခု ထပ်ပေါင်းထားတာပါ။
အရေးကြီးတဲ့ အချက်တစ်ခုက — Browser (ဒါမှမဟုတ်) Node.js က TypeScript ကို တိုက်ရိုက် run လို့မရပါဘူး။ TypeScript code ကို compiler (tsc) ကနေ plain JavaScript အဖြစ် ပြောင်းပြီးမှ run ရတာပါ။ ဒီ compile step တစ်ခုတည်းက JavaScript နဲ့ TypeScript ရဲ့ အခြေခံ ကွာခြားချက်အားလုံးရဲ့ အရင်းခံဖြစ်ပါတယ်။
Type System ကွာခြားချက်
JavaScript ဟာ dynamically typed language ပါ — variable တစ်ခုရဲ့ type ကို run လုပ်နေတုန်း ဆုံးဖြတ်ပြီး ပြောင်းလဲသွားနိုင်ပါတယ်။ TypeScript ကတော့ statically typed — variable, function parameter, return value တွေရဲ့ type ကို code ရေးနေတုန်း (compile-time) မှာပဲ သတ်မှတ်ပေးထားရပြီး၊ type မကိုက်ညီတဲ့ code ကို run မခံခင် compiler ကနေ error ထုတ်ပြပါတယ်။ ဒီအချက်တစ်ခုတည်းက အောက်က ကွာခြားချက်တွေအားလုံးကို ဖြစ်ပေါ်စေတာပါ။
| အချက် | JavaScript | TypeScript |
|---|---|---|
| Type checking | Dynamic — run-time မှာသာ သိရ | Static — compile-time မှာ သိရ |
| Run လုပ်ဖို့ | Browser/Node က တိုက်ရိုက် run နိုင် | tsc/bundler ဖြင့် JS အဖြစ် compile ရ |
| Error ဖော်ထုတ်ချိန် | Production မှာ user ကြုံမှ သိရလေ့ရှိ | Code ရေးနေတုန်း editor ထဲမှာ ချက်ချင်းမြင်ရ |
| Editor autocomplete | Limited — type ကို မသိလို့ | Strong — function/object shape အတိအကျ ညွှန်ပြ |
| Setup | Setup လိုအပ်ချက် မရှိ | tsconfig.json + build step လိုအပ် |
| Learning curve | Syntax ရိုးရှင်း | Interface, generics, union type စတာတွေ ထပ်လေ့လာရ |
ဘယ်အချိန် ဘယ်ဟာ ရွေးသင့်လဲ
'TypeScript က ဘာအခါမှာမဆို ပိုကောင်းတယ်' လို့ ယေဘုယျ ပြောလို့မရပါဘူး — project အရွယ်အစား၊ team size၊ project ကြာမြင့်ချိန်ပေါ်မှာ မူတည်ပါတယ်။ အောက်က situation တွေမှာ TypeScript ရဲ့ အားသာချက်က ပိုပြတ်သားလာပါတယ်။
TypeScript ဟာ language အသစ် မဟုတ်ပါ
Valid JavaScript code မှန်သမျှဟာ (syntax အနေနဲ့) valid TypeScript code ဖြစ်ပါတယ် — .js ဖိုင်တစ်ခုကို .ts လို့ rename လုပ်လိုက်ရုံနဲ့ compile ဖြစ်ပါလိမ့်မယ်။ ဒါကြောင့် 'TypeScript ကို အသစ် သီးသန့် သင်ရမလား' ဆိုတဲ့ စိုးရိမ်စရာ မလိုပါ — JavaScript အခြေခံ ကောင်းရင် TypeScript ကို type annotation တွေ တစ်ဆင့်ချင်း ထပ်ပေါင်းရုံပါပဲ။
JavaScript Project ကို TypeScript ဆီ ကူးပြောင်းနည်း
လက်ရှိ JavaScript project ကို တစ်ခါတည်း TypeScript အပြည့်အစုံ ပြောင်းစရာ မလိုပါဘူး — file တစ်ဖိုင်ချင်းစီ တဖြည်းဖြည်း ကူးပြောင်းလို့ ရပါတယ်။
| အဆင့် | ဘာလုပ်သင့်လဲ |
|---|---|
| 1. TypeScript ထည့်သွင်းခြင်း | npm install --save-dev typescript ပြီး npx tsc --init ဖြင့် tsconfig.json ဖန်တီးပါ |
| 2. allowJs ဖွင့်ခြင်း | tsconfig.json ထဲ allowJs: true ထည့်ပြီး .js ဖိုင်တွေကိုလည်း compiler ကို ဖတ်ခိုင်းပါ |
| 3. File တစ်ခုချင်းစီ .ts သို့ ပြောင်း | အသစ်ရေးမယ့် file (သို့) အရေးအကြီးဆုံး core logic ကနေစပြီး .js ကို .ts လို့ rename လုပ်ပါ |
| 4. Type error တွေကို တဖြည်းဖြည်း ဖြေရှင်း | Compiler ညွှန်ပြတဲ့ error တွေကို လိုက်ဖြေပါ — မသေချာသေးတဲ့နေရာမှာ any type ကို ယာယီ escape hatch အဖြစ် သုံးလို့ရပေမယ့် ရေရှည်မှာ လျှော့သုံးသင့်ပါတယ် |
| 5. strict mode ဖွင့်ခြင်း | File အများစု ပြောင်းပြီးမှ tsconfig ထဲ strict: true ကို နောက်ဆုံးမှ ဖွင့်ပါ — အစကတည်းက ဖွင့်ရင် error အရမ်းများပြီး လက်လျှော့စရာ ဖြစ်နိုင်ပါတယ် |
Framework အများစုက Built-in Support ပေးထားပြီးသား
Next.js, Vite, Create React App စတဲ့ tool အများစုက TypeScript ကို first-class support လုပ်ပြီးသားပါ — .tsx ဖိုင်တစ်ခုကို project ထဲ ထည့်လိုက်ရုံနဲ့ tsconfig.json ကို auto-generate လုပ်ပေးပါတယ်။ Manual setup စိတ်ပူစရာ မလိုအောင် tool တွေက ကူညီပေးထားပါတယ်။
အနှစ်ချုပ်
TypeScript ဟာ JavaScript ကို အစားထိုးတဲ့ language မဟုတ်ဘဲ၊ JavaScript အပေါ် static type checking ကို ထပ်ပေါင်းထားတဲ့ layer တစ်ခုပါ — compile လုပ်လိုက်တာနဲ့ plain JavaScript ပြန်ဖြစ်သွားပါတယ်။ Project အသေးစားနဲ့ quick script တွေအတွက် JavaScript က setup မလိုဘဲ ချက်ချင်းစလို့ရပေမယ့်၊ codebase ကြီးလာသည်နှင့်အမျှ TypeScript ရဲ့ compile-time error checking နဲ့ editor autocomplete က team ရဲ့ bug နည်းစေပြီး refactor ကို ပိုလုံခြုံစွာ လုပ်နိုင်စေပါတယ်။ ဘယ်ဟာမှ 'အမှန်' တစ်ခုတည်း မဟုတ်ပါ — project အခြေအနေပေါ်မူတည်ပြီး ရွေးချယ်ဖို့ပါပဲ။
