Ուղեցույցներ

Ի՞նչ է TypeScript-ը. պարզ ուղեցույց ոչ մշակողների համար

TypeScript-ը JavaScript է տիպերով։ Դուք ավելացնում եք պիտակներ, որոնք ասում են, թե յուրաքանչյուր արժեք ինչ տեսակի տվյալ պետք է լինի՝ թիվ, տեքստ, պատվերների ցանկ, և TypeScript-ը ստուգում է ձեր կոդը անհամապատասխանությունների համար՝ նախքան այն գործարկվելը։ TypeScript-ի կայքը նկարագրում է այն որպես «JavaScript՝ տիպերի շարահյուսությամբ»։ տիպերը հեռացվում են, երբ կոդը վերածվում է սովորական JavaScript-ի, որը հետո աշխատում է ամենուր, որտեղ աշխատում է JavaScript-ը։

Ինչու է դա կարևոր AI-ով կառուցելիս

AI մոդելները կոդ են գրում արագ, իսկ արագ գրված կոդում սխալներ են լինում։ customerName դաշտը մի ֆայլում և customer_name մյուսում, գինը փոխանցված տեքստի տեսքով թվի փոխարեն, ֆունկցիա, որը կանչվում է բացակայող արժեքով։ Սովորական JavaScript-ում շատ սխալներ հայտնվում են միայն այն ժամանակ, երբ ինչ-որ մեկը սեղմում է սխալ կոճակը։

TypeScript-ը դրանցից շատերը բռնում է ավելի վաղ, երբ կոդը դեռ գրվում է։

  • AI-ն ստանում է անմիջական արձագանք։ Տիպի սխալները ցույց են տալիս ճիշտ սխալ տողը, ուստի agent-ը կարող է այն շտկել, մինչև դուք այն տեսնեք։
  • Փոփոխությունները ավելի անվտանգ են։ Վերանվանեք դաշտը, և TypeScript-ը նշում է յուրաքանչյուր տեղ, որտեղ դեռ օգտագործվում է հին անունը։
  • Կոդը իրեն բացատրում է։ Տիպերը փաստաթղթավորում են, թե ինչ է սպասում և վերադարձնում ֆունկցիան, ինչը օգնում է ձեզ, AI-ին և յուրաքանչյուր մշակողի, որը հետագայում կաշխատի դրա վրա։
  • Խմբագիրները ավելի խելացի են դառնում։ Ավտոլրացումը և «go to definition»-ը ավելի լավ են աշխատում, քանի որ խմբագիրը գիտի, թե յուրաքանչյուր արժեք ինչ է։

Սա մեծ պատճառն է, թեև շատ AI հավելվածների կառուցողներ լռելյայն ընտրում են TypeScript-ը։

Առօրյա անալոգիա

Պատկերացրեք պահեստ՝ պիտակավորված բաժիններով։ Յուրաքանչյուր բաժին ունի նշան՝ «Միայն պալետներ», «Սառնարանային», «Առավելագույնը 500 կգ»։ Երբ առաքում է հասնում, դռան մոտ գտնվող ստուգիչը ապրանքները համեմատում է նշանի հետ։ Սառեցված ձուկը, որը ուղարկված է չոր ապրանքների բաժին, կանգնեցվում է դռան մոտ, ոչ թե մեկ շաբաթ անց, երբ արդեն հոտ է գալիս։

TypeScript-ը դռան ստուգիչն է։ Տիպերը նշաններն են։ Ստուգումը տեղի է ունենում այն ժամանակ, երբ ապրանքները՝ ձեր կոդը, դեռ չեն օգտագործվել։ Եվ երբ ամեն ինչ տեղում է, նշանները հանվում են։ աշխատող JavaScript-ի մեջ տիպեր այլևս չկան։

Ինչպես է աշխատում TypeScript-ը

  1. Դուք (կամ AI-ն) գրում եք .ts կամ .tsx ֆայլեր՝ TypeScript, տիպերի պիտակներով։
  2. Տիպերի ստուգիչը կարդում է կոդը և անհամապատասխանությունները հայտնում է որպես սխալներ խմբագրում կամ build-ում։
  3. Build քայլը հեռացնում է տիպերը՝ ստանալով սովորական JavaScript։
  4. 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; // the ? means optional
};

Եվ ֆունկցիա, որը հաշվարկում է կանխավճարը։

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

JavaScriptTypeScript
Ինչ էԼեզուն, որ բրաուզերներն են գործարկումJavaScript գումարած տիպերի շարահյուսություն
Ուղղակի աշխատում է բրաուզերներումԱյոՆախ վերածվում է JavaScript-ի
Բռնում է տիպերի սխալներըԳործարկման ժամանակ, եթե ընդհանրապեսԳրելու ընթացքում, գործարկումից առաջ
ԿարգավորումՉկաBuild քայլ (սովորաբար կարգավորվում է այնպիսի գործիքներով, ինչպիսիք են Vite-ը կամ Next.js-ը)
Հարմար էՓոքր սկրիպտների, արագ փորձերի համարԱճող և փոփոխվող հավելվածների համար
Ֆայլերի ընդլայնումներ.js, .jsx.ts, .tsx

Բացատրված ընդհանուր տերմիններ

ՏերմինԻնչ է նշանակում
ՏիպՆկարագրություն, թե արժեքը ինչ կարող է լինել՝ թիվ, տեքստ, օբյեկտի կոնկրետ ձև։
Տիպի նշումԿոդում գրված պիտակ, օրինակ՝ price: number։
Տիպի եզրակացումTypeScript-ը ինքն է որոշում տիպը առանց պիտակի։
Interface / type aliasՕբյեկտի ձևի անվանված նկարագրություն, օրինակ՝ Booking։
Union տիպԱրժեք, որը կարող է լինել մի քանի տարբերակներից մեկը, օրինակ՝ "haircut" | "colour"։
Կամընտիր հատկությունԴաշտ, որը կարող է բացակայել, նշված ?-ով։
anyՏիպ, որը անջատում է արժեքի ստուգումը. խնայողաբար օգտագործվող ելք։
Տիպի սխալTypeScript-ի հաղորդումը, որ ինչ-որ բան չի համապատասխանում։
Compile / transpileTypeScript-ը վերածել JavaScript-ի։
.tsxTypeScript ֆայլ, որը պարունակում է JSX, օգտագործվում է React հավելվածներում։
tsconfig.jsonԿարգավորումների ֆայլ, որը որոշում է, թե որքան խստորեն TypeScript-ը ստուգում է նախագիծը։
Գործարկման ժամանակի վալիդացիաԻրական մուտքային տվյալների ստուգում, երբ հավելվածը աշխատում է։

Ընդհանուր սխալներ և թյուրըմբռնումներ

  • «TypeScript-ը կոդը առանց սխալների է դարձնում»։ Այն բռնում է տվյալների ձևի անհամապատասխանությունները, ոչ թե սխալ տրամաբանությունը։ 20%-ի փոխարեն 2% կանխավճարը տիպերի ստուգումը հաջողությամբ է անցնում։
  • «Տիպերը ինձ պաշտպանում են վատ մուտքից»։ Տիպերը գործարկման ժամանակ անհետանում են։ Վալիդացրեք օգտատերերից, ձևերից և 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-ում։ Կարող եք դեռ ձեր առաջին հուշման մեջ խնդրել այլ կարգավորում։ docs-ի էջը այն մասին, թե ինչպես է ընտրվում տեխնոլոգիան բացատրում է, թե ինչպես, իսկ կոդի խմբագրի docs-ը ներկայացնում է, թե ինչ է ցույց տալիս խմբագիրը։

Հարցեր

Պարզ ասած, ի՞նչ է 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-ում։

Mythex · Pricing · Կառուցեք ամեն ինչ AI-ով · Կաղապարներ կայքերի և հավելվածների համար · Mythex-ի համեմատությունները · AI-ով հավելվածների ստեղծման բառարան · Անվճար գործիքներ AI-ով հավելվածներ ստեղծելու համար · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)