რა არის TypeScript? მარტივი გზამკვლევი არაპროგრამისტებისთვის
TypeScript არის JavaScript ტიპებით. თქვენ უმატებთ ეტიკეტებს, რომლებიც ამბობს, რა სახის მონაცემია თითოეული მნიშვნელობა — რიცხვი, ტექსტი, შეკვეთების სია — და TypeScript თქვენს კოდს შეუსაბამობებზე ამოწმებს კოდის გაშვებამდე. TypeScript-ის საიტი მას აღწერს როგორც „JavaScript ტიპების სინტაქსით“; ტიპები იშლება ჩვეულებრივ JavaScript-ად გარდაქმნისას, რომელიც მუშაობს ყველგან, სადაც JavaScript.
რატომ არის მნიშვნელოვანი AI-ით აშენებისას
AI მოდელები კოდს სწრაფად წერენ, და სწრაფ კოდს შეცდომები ახასიათებს: ველი სახელად customerName ერთ ფაილში და customer_name მეორეში, ფასი ტექსტად გადაცემული რიცხვის ნაცვლად, ფუნქცია გამოძახებული მნიშვნელობის გარეშე. ჩვეულებრივ JavaScript-ში ბევრი ასეთი შეცდომა მხოლოდ მაშინ ჩნდება, როცა ვინმე არასწორ ღილაკს დააჭერს.
TypeScript ბევრ მათგანს უფრო ადრე იჭერს, კოდის წერის პროცესში:
- AI მყისიერ უკუკავშირს იღებს. ტიპის შეცდომები ზუსტ ხაზზე მიგითითებთ, ასე რომ აგენტს შეუძლია გამოასწოროს, სანამ თქვენ დაინახავთ.
- ცვლილებები უფრო უსაფრთხოა. თუ ველს გადაარქმევთ, TypeScript ყველა ადგილს მონიშნავს, სადაც ძველი სახელი ჯერ კიდევ გამოიყენება.
- კოდი თავად განმარტავს. ტიპები აღწერს, რას ელის ფუნქცია და რას აბრუნებს, რაც თქვენს, AI-სა და ნებისმიერ დეველოპერს დაეხმარება, ვინც მოგვიანებით იმუშავებს მასზე.
- რედაქტორები უფრო ჭკვიანდებიან. ავტოშევსება და „go to definition“ უკეთ მუშაობს, რადგან რედაქტორმა იცის, რა არის თითოეული მნიშვნელობა.
ეს არის მნიშვნელოვანი მიზეზი, რის გამოც ბევრი AI აპის ბილდერი TypeScript-ს ნაგულისხმევად ირჩევს.
ყოველდღიური ანალოგია
წარმოიდგინეთ სატვირთო საწყობი ეტიკეტირებული განყოფილებებით. თითოეულს აქვს წარწერა: „მხოლოდ პალეტები“, „გაციებული“, „მაქს. 500 კგ“. როცა ტვირთი მოდის, კარებთან მცველი ადარებს საქონელს წარწერას. თევზი, რომელიც გაყინულია და მშრალი პროდუქტების განყოფილებაში მიდის, კარებთანვე შეჩერდება და არა მაშინ, როცა ერთ კვირაში სუნი დაიწყებს.
TypeScript არის კარებთან მცველი. ტიპები წარწერებია. შემოწმება ხდება მაშინ, როცა საქონელი — თქვენი კოდი — გამოყენებაში შედის. და როცა ყველაფერი ადგილზეა, წარწერებს აცლიან: გაშვებული JavaScript-ის შიგნით აღარ არის ტიპები.
როგორ მუშაობს TypeScript
- თქვენ (ან AI) წერთ
.tsან.tsxფაილებს — TypeScript, ტიპის ეტიკეტებით. - ტიპების შემმოწმებელი კითხულობს კოდს და შეუსაბამობებს ავითარებს რედაქტორში ან build-ში შეცდომებად.
- build ნაბიჯი აშორებს ტიპებს, და ამით მიიღება ჩვეულებრივი JavaScript.
- JavaScript მუშაობს ბრაუზერში ან სერვერზე (Node.js, Deno, Bun).
მნიშვნელოვანი შედეგი: TypeScript ამოწმებს კოდს, რომელიც თქვენ დაწერეთ, და არა მონაცემებს, რომლებიც აპის გაშვებისას მოდის. თუ გარე API რაიმე მოულოდნელს დააბრუნებს, TypeScript ამას ვერ ხედავს, სანამ არ დაამატებთ გაშვების დროის ვალიდაციას.
სამუშაო მაგალითი: დაჯავშნის ფორმა
თქვით, აშენებთ დაჯავშნის აპს საპარიკმახეროსთვის. აი ტიპი, რომელიც დაჯავშნას აღწერს:
type Booking = {
id: number;
customerEmail: string;
service: "haircut" | "colour" | "blow-dry";
startsAt: Date;
price: number;
notes?: string; // ? ნიშნავს, რომ არასავალდებულოა
};
და ფუნქცია, რომელიც ავანსის გამოთვლას ახდენს:
function depositFor(booking: Booking): number {
return booking.price * 0.2;
}
ახლა ნახეთ, რას იჭერს TypeScript.
არასწორად დაწერილი ველი.
depositFor({ id: 1, customerEmail: "lena@example.com", service: "haircut",
startsAt: new Date(), prise: 40 });
TypeScript აცხადებს, რომ prise უცნობი თვისებაა და price აკლია. JavaScript-ში ეს უხმოდ გამოთვლიდა ავანსს NaN (არ არის რიცხვი).
არასწორი ტიპის მნიშვნელობა.
const booking: Booking = { ...otherFields, price: "40" };
TypeScript აცხადებს, რომ სტრიქონი არ შეიძლება იქ გამოიყენო, სადაც რიცხვია მოსალოდნელი. მის გარეშე "40" * 0.2 შემთხვევით იმუშავებდა, მაგრამ "40" + 5 მოგცემდა "405"-ს — ასეთი შეცდომა ინვოისზე გამოჩნდება.
სერვისი, რომელიც არ არსებობს.
const booking: Booking = { ...otherFields, service: "perm" };
TypeScript აცხადებს, რომ "perm" დაშვებულ სერვისებს შორის არ არის. როცა სალონი მოგვიანებით perm-ს დაამატებს, თქვენ მას ტიპში შეიყვანთ და TypeScript აჩვენებს ყველა ადგილს, რომელსაც განახლება სჭირდება — ფასების სია, ფორმა, კალენდრის ფერები.
რის დაჭერა არ შეუძლია. თუ დაჯავშნის ფორმა ბრაუზერიდან სერვერზე price: "40"-ს აგზავნის, სერვერის TypeScript ამას გაშვების დროს ვერ ხედავს. ამიტომაა, რომ კარგად აგებული აპები შემომავალ მონაცემებსაც ამოწმებენ, ხშირად ვალიდაციის ბიბლიოთეკით, რომელიც ფორმას შეამოწმებს და სწორ Booking-ად გარდაქმნის.
TypeScript და JavaScript
| JavaScript | TypeScript | |
|---|---|---|
| რა არის | ენა, რომელსაც ბრაუზერები უშვებენ | JavaScript პლუს ტიპების სინტაქსი |
| მუშაობს ბრაუზერში პირდაპირ | დიახ | ჯერ JavaScript-ად გარდაიქმნება |
| იჭერს ტიპის შეცდომებს | გაშვების დროს, თუ საერთოდ | წერის დროს, გაშვებამდე |
| დაყენება | არ სჭირდება | build ნაბიჯი (ჩვეულებრივ ისეთი ინსტრუმენტებით, როგორიცაა Vite ან Next.js) |
| კარგია | პატარა სკრიპტებისთვის, სწრაფი ექსპერიმენტებისთვის | აპებისთვის, რომლებიც გაიზრდება და შეიცვლება |
| ფაილების გაფართოებები | .js, .jsx | .ts, .tsx |
გამოყენებული ტერმინები
| ტერმინი | რას ნიშნავს |
|---|---|
| ტიპი | აღწერა იმისა, რა შეიძლება იყოს მნიშვნელობა: რიცხვი, ტექსტი, ობიექტის კონკრეტული ფორმა. |
| ტიპის ანოტაცია | ეტიკეტი კოდში, მაგალითად price: number. |
| ტიპის ინფერენცია | როცა TypeScript თავად ადგენს ტიპს ეტიკეტის გარეშე. |
| Interface / type alias | სახელდებული აღწერა ობიექტის ფორმისა, მაგალითად Booking. |
| Union ტიპი | მნიშვნელობა, რომელიც რამდენიმე ვარიანტიდან ერთ-ერთი შეიძლება იყოს, მაგალითად "haircut" | "colour". |
| არასავალდებულო თვისება | ველი, რომელიც შეიძლება არ იყოს, ? ნიშნით აღნიშნული. |
any | ტიპი, რომელიც მნიშვნელობისთვის შემოწმებას თიშავს — გაქცევის გზა, რომელიც იშვიათად უნდა გამოიყენოთ. |
| ტიპის შეცდომა | TypeScript-ის მიერ შეუსაბამობის ანგარიში. |
| Compile / transpile | TypeScript-ის გარდაქმნა JavaScript-ად. |
.tsx | TypeScript ფაილი, რომელიც JSX-ს შეიცავს და React აპებში გამოიყენება. |
tsconfig.json | პროექტის პარამეტრების ფაილი, რომელიც განსაზღვრავს, რამდენად მკაცრად ამოწმებს TypeScript. |
| გაშვების დროის ვალიდაცია | რეალური შემომავალი მონაცემების შემოწმება აპის გაშვებისას. |
გავრცელებული შეცდომები და მცდარი წარმოდგენები
- „TypeScript კოდს შეცდომებისგან თავისუფალს ხდის.“ ის იჭერს მონაცემების ფორმის შეუსაბამობებს, არა არასწორ ლოგიკას. 2%-იანი ავანსი 20%-ის ნაცვლად ტიპებს შეესაბამება და მაინც სწორად შემოწმდება.
- „ტიპები დაგიცავთ არასწორი შემომავალი მონაცემებისგან.“ ტიპები გაშვებისას ქრება. ამოწმეთ მომხმარებლების, ფორმებისა და API-ების მონაცემები.
anyყველგან. როცა AI გაჭედილია, შეიძლებაanyან// @ts-ignoreგამოიყენოს შეცდომების დასაჩუმებლად. ეს პრობლემებს მალავს და არა აგვარებს.- ტიპის შეცდომების იგნორირება, რადგან Preview მუშაობს. ზოგი ინსტრუმენტი მაინც უშვებს კოდს ტიპის შეცდომებით. ეს შეცდომები მაინც მომავალი ბაგებია.
- „TypeScript ნელია.“ ტიპები გაშვებამდე იშლება; გაშვებული JavaScript არსებითად იგივეა.
- „ეს მხოლოდ დიდი გუნდებისთვისაა.“ სოლო ბილდერებიც სარგებლობენ, განსაკუთრებით მაშინ, როცა რედაქტირების უმეტესობას AI აკეთებს.
რა სთხოვოთ თქვენს AI-ბილდერს
- „გამოიყენე TypeScript strict რეჟიმით.“
- „განსაზღვრე საერთო ტიპები ჩვენი მთავარი ჩანაწერებისთვის — Customer, Booking, Invoice — და გამოიყენე ისინი როგორც frontend-ზე, ისე backend-ზე.“
- „არ გამოიყენო
anyან@ts-ignoreშეცდომების ასაცდენად; გამოასწორე ძირითადი პრობლემა და მითხარი, რა იყო.“ - „შეამოწმე ყველა შემომავალი მონაცემი სერვერზე, არა მხოლოდ ტიპებით.“
- „გაუშვი ტიპების შემმოწმებელი და გამოასწორე ყველა შეცდომა, სანამ მეტყვი, რომ დასრულდა.“
- „როცა ველს გადაარქმევ, განაახლე ყველა ადგილი, რომელსაც TypeScript მონიშნავს.“
- „ჩემთვის მარტივი ენით ახსენი ეს ტიპის შეცდომა.“
AI-ით შექმნილი კოდის შესამოწმებლად იხილეთ როგორ გადავხედოთ AI-ით გენერირებულ კოდს და როგორ დებაგოთ AI-ით აშენებული აპი.
TypeScript Mythex-ში
როცა კონკრეტულად არაფერს ითხოვთ, Mythex ახალ პროექტებს იწყებს Vite + React + TypeScript + Tailwind სტეკზე. კოდის რედაქტორი შეიცავს ენის მხარდაჭერას — დასრულებებს, დიაგნოსტიკას და go-to-definition-ს TypeScript-ისა და JavaScript-ისთვის, სხვა ენებთან ერთად — ასე რომ ტიპის შეცდომები კოდში ჩანს და არა მხოლოდ Preview-ში. რედაქტორი Free-ზე მხოლოდ წაკითხვადია, Pro-ზე სრულად რედაქტირებადი. თუ სხვა დაყენება გინდათ, თქვით ეს თქვენს პირველ prompt-ში; დოკუმენტაციის გვერდი როგორ შეირჩევა ტექნოლოგია განმარტავს, როგორ, ხოლო კოდის რედაქტორის დოკუმენტაცია აღწერს, რას აჩვენებს რედაქტორი.
კითხვები
რა არის TypeScript მარტივად?
TypeScript არის JavaScript ტიპებით. თქვენ აღნიშნავთ, რა სახის მონაცემი უნდა იყოს თითოეული მნიშვნელობა — რიცხვი, ტექსტი თუ კლიენტის ჩანაწერი — და TypeScript კოდს არასათანადო შესაბამისობაზე გაშვებამდე ამოწმებს. შემდეგ ის გარდაიქმნება ჩვეულებრივ JavaScript-ად.
არის თუ არა TypeScript JavaScript-ისგან განსხვავებული ენა?
ეს JavaScript-ის ზენაკარია: JavaScript პლუს დამატებითი სინტაქსი ტიპებისთვის. TypeScript-ის საიტი მას აღწერს როგორც JavaScript-ს ტიპების სინტაქსით. ტიპები იშლება, როცა კოდი გაშვებისთვის JavaScript-ად გარდაიქმნება.
რატომ იყენებენ AI აპის ბილდერები TypeScript-ს?
ტიპები აძლევს AI-ს და მის გარშემო ინსტრუმენტებს სწრაფ გზას შეცდომების დასაჭერად, მაგალითად ტექსტის გადაცემისთვის იქ, სადაც რიცხვია მოსალოდნელი, ან ველის სახელის არასწორად დაწერისთვის. შეცდომები მომხმარებლამდე მიღწევამდე ჩნდება, რაც AI-ით გენერირებულ კოდს უფრო ადვილად შესამოწმებელს და შესაცვლელს ხდის.
აკეთებს თუ არა TypeScript აპს შეცდომებისგან თავისუფალს?
არა. ის იჭერს მონაცემების ფორმასთან დაკავშირებული შეცდომების მთელ კლასს, მაგრამ არა არასწორ ბიზნეს-ლოგიკას, და არ ამოწმებს მომხმარებლებისგან ან API-ებიდან გაშვების დროს მიღებულ მონაცემებს, თუ თქვენ არ დაამატებთ ვალიდაციას.
ვინ ქმნის TypeScript-ს?
TypeScript არის ღია კოდის ენა, რომელსაც Microsoft ავითარებს. ის მუშაობს ყველგან, სადაც JavaScript მუშაობს, მათ შორის ბრაუზერებში, Node.js-ში, Deno-სა და Bun-ში.