სარჩევი[დამალვა][ჩვენება]
- 1. კონკრეტულად რა არის TypeScript და რით განსხვავდება ის JavaScript-ისგან?
- 2. რა არის TypeScript-ის ზოგიერთი მნიშვნელოვანი მახასიათებელი?
- 3. რა სარგებელი მოაქვს TypeScript-ის გამოყენებას?
- 4. რა ნაკლი აქვს TypeScript-ის გამოყენებას?
- 5. კონკრეტულად რა არის TypeScript-ის კომპონენტები?
- 6. შეგიძლიათ ახსნათ ინტერფეისები TypeScript-ში?
- 7. რა არის ცვლადები TypeScript-ში და როგორ ხდება მათი დეკლარირება სხვადასხვა გზით?
- 8. როგორ შეიძლება გამოყენებულ იქნას ინტერფეისის ქვეჯგუფი ახალი ტიპის გენერირებისთვის?
- 9. რას გულისხმობთ „ნებისმიერ“ ტიპებში და როდის უნდა გამოვიყენო ისინი?
- 10. როგორ არის TypeScript ენა სურვილისამებრ სტატიკურად აკრეფილი სინტაქსით?
- 11. TypeScript-ში რას ნიშნავს მოდულები?
- 12. როგორ ფუნქციონირებს “enums” TypeScript-ში?
- 13. რა განასხვავებს შიდა მოდულს გარე მოდულისგან?
- 14. რას ნიშნავს TypeScript-ის ანონიმური ფუნქცია?
- 15. TypeScript-ში რა არის სახელთა სივრცე და როგორ გამოვაცხადოთ იგი?
- 16. რა წვდომის მოდიფიკატორებს უჭერს მხარს TypeScript?
- 17. იძლევა თუ არა TypeScript ფუნქციის გადატვირთვის საშუალებას?
- 18. როგორ უშვებს TypeScript არჩევით არგუმენტებს ფუნქციებში?
- 19. როგორ განსხვავდება var, let და const ერთმანეთისგან?
- 20. TypeScript-ში აღწერეთ დეკორატორები?
- 21. TypeScript-ში რას ნიშნავს Mixins?
- 22. კონკრეტულად რა არის TypeScript-ში Type Aliases?
- 23. რას ნიშნავს ტერმინი „Scope ცვლადი“?
- 24. კონკრეტულად რისთვის გამოიყენება noImplicitAny?
- 25. როგორ განსხვავდება კავშირი და გადაკვეთის ტიპები ერთმანეთისგან?
- 26. როგორ განვსაზღვროთ TypeScript Declare Keyword?
- 27. TypeScript-ში რა არის ჯენერიკა?
- 28. რას ნიშნავს JSX TypeScript-ში?
- 29. რა არის TypeScript Ambients და როდის უნდა გამოვიყენო ისინი?
- 30. რას გულისხმობთ აბსტრაქტულ კლასში TypeScript-ში?
- 31. კონკრეტულად რა არის TypeScript Map ფაილი?
- 32. TypeScript-ში რა არის ტიპის მტკიცებები?
- დასკვნა
Microsoft-მა შეიმუშავა და აგრძელებს TypeScript პროგრამირების ენის მხარდაჭერას. სტატიკური აკრეფის, როგორც ვარიანტის დამატებით, ის არის JavaScript-ის სინტაქსური სუპერკომპლექტი.
ფართომასშტაბიანი აპლიკაციის განვითარების ენა TypeScript ადგენს JavaScript-ს. ვინაიდან TypeScript არის JavaScript-ის სუპერკომპლექტი, JavaScript-ში დაწერილი პროგრამები ასევე მოქმედებს TypeScript-ში.
აქ არის ყველაზე ტიპიური TypeScript დეველოპერის ინტერვიუს კითხვებისა და პასუხების ყოვლისმომცველი სია, თუ თქვენ ესწრებით მას.
1. კონკრეტულად რა არის TypeScript და რით განსხვავდება ის JavaScript-ისგან?
JavaScript-ის სუპერკომპლექტი, TypeScript აწყობს სტანდარტულ JavaScript-ს. კონცეპტუალური თვალსაზრისით, TypeScript და JavaScript მსგავსია SASS-ისა და CSS-ის.
სხვა სიტყვებით რომ ვთქვათ, TypeScript არის ES6 JavaScript კიდევ რამდენიმე შესაძლებლობით. JavaScript არის სკრიპტირების ენა უფრო მეტად Python-ის მსგავსი, ხოლო TypeScript არის ობიექტზე ორიენტირებული, სტატიკურად აკრეფილი ენა, რომელიც შედარებულია Java-სა და C#-თან.
კლასები და ინტერფეისები არის TypeScript-ის ობიექტზე ორიენტირებული დიზაინის ნაწილი და ტიპის დასკვნა არის ერთ-ერთი მრავალი ხელსაწყოდან, რომელიც ხელმისაწვდომია მისი სტატიკური აკრეფის წყალობით.
JavaScript იწერება ფაილში .js გაფართოებით, ხოლო TypeScript იწერება ფაილში .ts გაფართოებით.
JavaScript-ის საპირისპიროდ, TypeScript კოდი არ შეიძლება პირდაპირ გაშვებული იყოს ბრაუზერში ან სხვა პლატფორმაზე და არ არის გასაგები ბრაუზერებისთვის. შემდეგ სამიზნე პლატფორმა გაუშვებს უბრალო JavaScript-ს, რომელიც შეიქმნა .ts ფაილებიდან TypeScript-ის ტრანსპლერის გამოყენებით.
2. რა არის TypeScript-ის ზოგიერთი მნიშვნელოვანი მახასიათებელი?
- სტატიკური აკრეფა არის TypeScript-ის ფუნქცია, რომელიც ხელს უწყობს ტიპის შემოწმებას კომპილაციის დროს. ასე რომ, სკრიპტის შესრულების გარეშეც კი შეგიძლიათ კოდში შეცდომის აღმოჩენა მისი დაწერისას.
- DOM შეიძლება შეიცვალოს TypeScript-ის გამოყენებით ელემენტების დასამატებლად ან წასაშლელად.
- ნებისმიერ ოპერაციულ სისტემას, მათ შორის Windows, macOS და Linux, შეიძლება ჰქონდეს TypeScript შემდგენელი დაინსტალირებული.
- კლასები, ინტერფეისები და მოდულები არის TypeScript-ის მიერ შემოთავაზებული ზოგიერთი ფუნქციონალობა. ამრიგად, მას შეუძლია შექმნას ობიექტზე ორიენტირებული კოდი როგორც კლიენტის, ასევე სერვერის მხარის განვითარებისთვის.
- ECMAScript 2015-ის ფუნქციების უმეტესობა (ES 6, 7) უკვე შედის TypeScript-ში, მათ შორის კლასი, ინტერფეისი, ისრის ფუნქციები და ა.შ.
- თუ იყენებთ JavaScript-ის დინამიურ აკრეფას, TypeScript ასევე მხარს უჭერს არასავალდებულო სტატიკურ აკრეფას.
3. რა სარგებელი მოაქვს TypeScript-ის გამოყენებას?
- ნებისმიერ JavaScript ძრავას ან ბრაუზერს შეუძლია TypeScript-ის შესრულება, რადგან ის არის სწრაფი, მარტივი შესასწავლი და სწრაფად მუშაობს.
- ის იზიარებს იგივე სინტაქსს და სემანტიკას, როგორც JavaScript.
- ეს ხელს უწყობს წინა ნაწილის კოდის უფრო სწრაფად დაწერას backend-ის დეველოპერების მიერ.
- იგი აერთიანებს ES6 და ES7 შესაძლებლობებს, რაც შეიძლება ფუნქცია JavaScript-ში ES5 ძრავები, როგორიცაა Node.js.
- არსებული JavaScript ბიბლიოთეკები, როგორიცაა Jquery, D3.js და ა.შ. მხარდაჭერილია Definition ფაილის მეშვეობით, რომელსაც აქვს გაფართოება.d.ts.
- JavaScript სკრიპტს, რომელიც უკვე არსებობს, შეუძლია გამოიძახოს TypeScript კოდი. ის ასევე შეუფერხებლად აერთიანებს JavaScript-ის მიმდინარე ჩარჩოებსა და ბიბლიოთეკებს.
4. რა ნაკლი აქვს TypeScript-ის გამოყენებას?
- TypeScript-ით კოდირება მოითხოვს ხანგრძლივი შედგენის პროცესს.
- მას არ აქვს აბსტრაქტული კლასების მხარდაჭერა.
- ტიპი განსაზღვრის ფაილების ხარისხი პრობლემაა.
- ნებისმიერ მესამე მხარის ბიბლიოთეკას უნდა ჰქონდეს განმარტებითი ფაილი გამოსაყენებლად.
- TypeScript-ის JavaScript-ად კონვერტაციისთვის აუცილებელია კომპილაციის ეტაპი, თუ გვინდა ბრაუზერში TypeScript აპლიკაციის გაშვება.
- JavaScript გამოიყენება მრავალი წლის განმავლობაში ვებ დეველოპერების მიერ და TypeScript არ იძლევა რაიმე ახალს.
5. კონკრეტულად რა არის TypeScript-ის კომპონენტები?
TypeScript-ში არის კომპონენტების სამი ძირითადი კატეგორია, მათ შორის:
- ენა: შეიცავს ანოტაციებს ტიპის, საკვანძო სიტყვებისა და სინტაქსისთვის.
- TypeScript შემდგენელი: TypeScript ინსტრუქციები ითარგმნება JavaScript-ში ამ შემდგენელის მიერ (tsc).
- TypeScript ენის სერვისი: ენის სერვისი გთავაზობთ რედაქტორის მსგავს აპებს, როგორც მეორე ფენას ძირითადი შემდგენელი პროცესის თავზე. საერთო რედაქტირების ოპერაციების სტანდარტული ნაკრები მხარდაჭერილია ენის სერვისის მიერ.
6. შეგიძლიათ ახსნათ ინტერფეისები TypeScript-ში?
TypeScript იყენებს ინტერფეისებს ერთეულების სინტაქსის დასაზუსტებლად. სხვა სიტყვებით რომ ვთქვათ, მონაცემთა ფორმები, როგორიცაა ობიექტები ან ნივთების მასივი, შეიძლება აღწერილი იყოს ინტერფეისების გამოყენებით. ინტერფეისის საკვანძო სიტყვა, ინტერფეისის სახელი და მისი განმარტება გამოიყენება ინტერფეისების გამოცხადებისთვის. მოდით განვიხილოთ მომხმარებლის ობიექტის ძირითადი ინტერფეისი.
ცვლადის ტიპი შეიძლება დაყენდეს ინტერფეისის გამოყენებით (ისევე, თუ როგორ ანიჭებთ პრიმიტიულ ტიპებს ცვლადს). ინტერფეისის თვისებებს შემდეგ დააკმაყოფილებს მომხმარებლის ტიპის ცვლადი.
თქვენი TypeScript პროექტი სარგებლობს ინტერფეისებით, რადგან ისინი უზრუნველყოფენ ერთგვაროვნებას. გარდა ამისა, ინტერფეისები აძლიერებენ თქვენი პროექტის ინსტრუმენტებს IDE ავტომატური შევსების შესაძლებლობების გაძლიერებით და გარანტიით, რომ სწორი მნიშვნელობები მიეწოდება კონსტრუქტორებსა და მეთოდებს.
7. რა არის ცვლადები TypeScript-ში და როგორ ხდება მათი დეკლარირება სხვადასხვა გზით?
ცვლადი არის მეხსიერების სპეციალურად გამოყოფილი არე, რომელიც გამოიყენება მნიშვნელობების შესანახად. ორწერტილი (:) მოთავსებულია ცვლადის სახელის შემდეგ და მას მოსდევს ტიპი TypeScript-ში ცვლადის გამოცხადებისას. ჩვენ ვაცხადებთ ცვლადებს var საკვანძო სიტყვით, ისევე როგორც JavaScript-ში.
Typescript-ში ცვლადის გამოცხადებისას უნდა დაიცვან გარკვეული მითითებები:
- სახელი არ შეიძლება დაიწყოს რიცხვით.
- ცვლადის სახელი უნდა შეიცავდეს ასოებს ან ციფრებს.
- დოლარის სიმბოლო ($) და ხაზგასმული (_) ერთადერთი სპეციალური სიმბოლოა, რომელიც ნებადართულია ამ ველში.
8. როგორ შეიძლება გამოყენებულ იქნას ინტერფეისის ქვეჯგუფი ახალი ტიპის გენერირებისთვის?
არსებული ტიპის ან ინტერფეისის მიწოდებით და ახალი ტიპის გასაღებების არჩევით, შეგიძლიათ შექმნათ ახალი ტიპი TypeScript-ში სასარგებლო ტიპის omit-ის გამოყენებით.
შემდეგი მაგალითი გვიჩვენებს, თუ როგორ უნდა ავაშენოთ ახალი ტიპი სახელწოდებით UserPreview, რომელიც დაფუძნებულია მომხმარებლის ინტერფეისზე, მაგრამ გამორიცხავს ელ.ფოსტის თვისებას.
9. რას გულისხმობთ „ნებისმიერ“ ტიპებში და როდის უნდა გამოვიყენო ისინი?
ზოგჯერ საჭიროა ცვლადის მნიშვნელობის შენახვა, მაგრამ წინასწარ არ ხართ დარწმუნებული ცვლადის ტიპში. მნიშვნელობა შეიძლება წარმოიშვას მომხმარებლის შეყვანიდან ან API მოთხოვნიდან, მაგალითად. თქვენ შეგიძლიათ მიანიჭოთ ნებისმიერი ტიპის მნიშვნელობა ცვლადის ტიპს "ნებისმიერი" ტიპის გამოყენებით.
როდესაც ცვლადის ტიპი ცალსახად არ არის მითითებული და შემდგენელს არ შეუძლია მისი კონტექსტიდან განსაზღვრა, TypeScript თვლის, რომ ცვლადი ნებისმიერი ტიპისაა.
10. როგორ არის TypeScript ენა სურვილისამებრ სტატიკურად აკრეფილი სინტაქსით?
შესაძლებელია კომპილატორს დაავალოს TypeScript-ში ცვლადის ტიპის უგულებელყოფა, რადგან ის არჩევითია სტატიკურად აკრეფილი. ნებისმიერი ტიპის მონაცემები შეიძლება გამოყენებულ იქნას ცვლადისთვის ნებისმიერი სახის მნიშვნელობის მინიჭებისთვის. შედგენისას TypeScript არ უზრუნველყოფს შეცდომის შემოწმებას.
11. TypeScript-ში რას ნიშნავს მოდულები?
ეფექტურია შესაბამისი ცვლადების, ფუნქციების, კლასების, ინტერფეისების და ა.შ. გაერთიანება მოდულების გამოყენებით. მისი გამოყენება შესაძლებელია, მაგრამ არა გლობალური მასშტაბით, მხოლოდ საკუთარი ფარგლების შიგნით.
არსებითად, მოდულის განსაზღვრულ ცვლადებზე, ფუნქციებზე, კლასებსა და ინტერფეისებზე პირდაპირ წვდომა შეუძლებელია მოდულის გარედან.
ექსპორტის საკვანძო სიტყვა შეიძლება გამოყენებულ იქნას მოდულის შესაქმნელად, ხოლო იმპორტის საკვანძო სიტყვა შეიძლება გამოყენებულ იქნას მოდულის სხვა მოდულში ჩართვისთვის.
12. როგორ ფუნქციონირებს “enums” TypeScript-ში?
დასახელებული მუდმივების კრებულის განსაზღვრის მეთოდი არის რიცხვების ან ჩამოთვლილი ტიპების გამოყენება. ამ მონაცემთა სტრუქტურებს აქვთ ფიქსირებული სიგრძე და ფიქსირებული მნიშვნელობების კოლექცია.
TypeScript-ში მოცემული მნიშვნელობის ალტერნატივების კრებულის წარმოდგენისას, რიცხვები ხშირად გამოიყენება შესაძლებლობების აღსაწერად გასაღების/მნიშვნელობის წყვილების ნაკრების გამოყენებით.
მოდი ვნახოთ ილუსტრაცია ნომრის, რომელიც გამოიყენება სხვადასხვა ტიპის მომხმარებლის უზრუნველსაყოფად.
ენუმები შიგადაშიგ გარდაიქმნება რეგულარულ JavaScript ობიექტებად TypeScript-ის შედგენის შემდეგ. ამიტომ, enums-ის გამოყენება სასურველია, ვიდრე რამდენიმე ცალკეული const ცვლადის გამოყენება.
თქვენი კოდი ტიპი-უსაფრთხოა და უფრო ადვილად აღსაქმელია იმ დაჯგუფების გამო, რომელსაც ნომრები გვაწვდის.
13. რა განასხვავებს შიდა მოდულს გარე მოდულისგან?
შიდა მოდული:
- შიდა მოდულები იყო Typescript-ის წინა გამეორების მახასიათებელი.
- შიდა მოდულების სახელი და ნაწილი განისაზღვრება ModuleDeclarations-ის გამოყენებით.
- ესენი არიან სხვა მოდულების წევრები, რომლებიც ადგილობრივი ან ექსპორტირებულია.
- კლასები, ინტერფეისები, ფუნქციები და ცვლადები დაჯგუფებულია შიდა მოდულებში, რომელთა ექსპორტი შესაძლებელია სხვა მოდულში.
გარე მოდული:
- უახლეს ვერსიაში, გარე მოდულებს უწოდებენ მოდულებს.
- ცალკე წყაროს ფაილი, რომელიც ცნობილია როგორც გარე მოდული, გამოიყენება მათ შესაქმნელად და თითოეულ მათგანს აქვს მინიმუმ ერთი იმპორტის ან ექსპორტის დეკლარაცია.
- უახლეს ვერსიაში, გარე მოდულებს უწოდებენ მოდულებს.
- მოდულის განმარტებების შიდა განცხადებები შეიძლება დამალული იყოს გარე მოდულების გამოყენებით, ხილული დარჩეს მხოლოდ მეთოდები და არგუმენტები, რომლებიც დაკავშირებულია განსაზღვრულ ცვლადთან.
14. რას ნიშნავს TypeScript-ის ანონიმური ფუნქცია?
ანონიმურად კლასიფიცირებულ ფუნქციებს არ გააჩნიათ ფუნქციის სახელი, როგორც იდენტიფიკატორი. ეს რუტინები დინამიურად არის განსაზღვრული გაშვების დროს. ჩვეულებრივი ფუნქციების მსგავსად, ანონიმურ ფუნქციებს შეუძლიათ მიიღონ შეყვანები და გამოიტანონ შედეგები.
ანონიმური ფუნქცია, როგორც წესი, მიუწვდომელია მისი შექმნის შემდეგ. ცვლადები შეიძლება მიენიჭოს ანონიმურ ფუნქციას.
15. TypeScript-ში რა არის სახელთა სივრცე და როგორ გამოვაცხადოთ იგი?
სახელთა სივრცე ლოგიკურად აჯგუფებს ფუნქციებს. ისინი შინაგანად ინარჩუნებენ საბეჭდი სკრიპტის მემკვიდრეობის კოდს. ის მოიცავს თვისებებს და საგნებს განსაკუთრებული კავშირებით.
სახელთა სივრცის კიდევ ერთი სახელი არის შიდა მოდული. ინტერფეისები, კლასები, ფუნქციები და ცვლადები შეიძლება იყოს შეტანილი სახელთა სივრცეში, რათა უზრუნველყოს დაკავშირებული ფუნქციების კოლექცია.
16. რა წვდომის მოდიფიკატორებს უჭერს მხარს TypeScript?
ქვემოთ მოცემულია მაგალითები იმისა, თუ როგორ შეიძლება გამოიყენებოდეს TypeScript-ში საჯარო, კერძო და დაცული წვდომის მოდიფიკატორები კლასის წევრის ხელმისაწვდომობის გასაკონტროლებლად:
- საჯარო - წვდომა ხელმისაწვდომია კლასის ყველა წევრისთვის, მისი ყველა შთამომავალი კლასისთვის და კლასის ყველა მაგალითისთვის.
- დაცული - ისინი ხელმისაწვდომია კლასის ყველა წევრისთვის და მისი ყველა ქვეკლასისთვის. თუმცა, კლასის მაგალითზე წვდომა შეუძლებელია.
- მათზე პირადი წვდომა შეზღუდულია მხოლოდ კლასის წევრებისთვის.
ვინაიდან JavaScript მოსახერხებელია, თუ წვდომის მოდიფიკატორი არ არის მოცემული, ის საჯაროა.
17. იძლევა თუ არა TypeScript ფუნქციის გადატვირთვის საშუალებას?
დიახ, ფუნქციის გადატვირთვა მხარდაჭერილია TypeScript-ის მიერ. მაგრამ ახლა ეს კეთდება უცნაურია. ამიტომ, TypeScript-ით გადატვირთვისას, არსებობს მხოლოდ ერთი იმპლემენტაცია სხვადასხვა ხელმოწერებით.
მიუხედავად იმისა, რომ მეორე ხელმოწერა შეიცავს ტიპის ტექსტის პარამეტრს, პირველ ხელმოწერას აქვს მხოლოდ ერთი ტიპის ნომრის პარამეტრი. მესამე ფუნქცია, რომელიც მოიცავს ნებისმიერი ტიპის არგუმენტს, შეიცავს რეალურ განხორციელებას.
შემდეგ განხორციელება განსაზღვრავს მოწოდებული პარამეტრის ტიპს და აწარმოებს კოდის ცალკეულ განყოფილებას ამ განსაზღვრების შესაბამისად.
18. როგორ უშვებს TypeScript არჩევით არგუმენტებს ფუნქციებში?
JavaScript-ის საპირისპიროდ, თუ ცდილობთ ფუნქციის გამოძახებას მისი ფუნქციის ხელმოწერაში მითითებული ზუსტი რაოდენობისა და სახის პარამეტრების მითითების გარეშე, TypeScript შემდგენელი წარმოშობს შეცდომას.
თქვენ შეგიძლიათ გამოიყენოთ არასავალდებულო პარამეტრები კითხვის ნიშნის სიმბოლოს ('?') გამოყენებით ამ პრობლემის გადასაჭრელად. ის გვიჩვენებს, რომ არჩევითი პარამეტრების აღნიშვნა შესაძლებელია „?“-ის დამატებით. მათ, ვინც შეიძლება მიიღოს ან არ მიიღოს ღირებულება.
19. როგორ განსხვავდება var, let და const ერთმანეთისგან?
ცვლადის გამოცხადების სამ განსხვავებულ გზას გვთავაზობს TypeScript, თითოეულს აქვს შემოთავაზებული აპლიკაცია.
იყო: აცხადებს გლობალურ ან ფუნქციის ფარგლებს ცვლადს JavaScript-ის ცვლადების ქცევით და სკოპინგის მითითებებით. ცვლადებს არ სჭირდებათ მათი მნიშვნელობების დაყენება, როდესაც ისინი გამოცხადდებიან.
დაე: აცხადებს ლოკალური მასშტაბის ბლოკის ცვლადს. მოდით, ცვლადებს არ სჭირდებათ ცვლადის მნიშვნელობის დაყენება, როდესაც ისინი გამოცხადდებიან. ტერმინი „ბლოკის მასშტაბის ლოკალური ცვლადი“ ეხება ცვლადს, რომლის წვდომა შესაძლებელია მხოლოდ იმ ბლოკის შიგნიდან, რომელშიც ის შეიცავს, როგორიცაა ფუნქცია, if/else ბლოკი ან ციკლი. მოდით ცვლადების წაკითხვა ან ჩაწერა შეუძლებელია მათ გამოცხადებამდე, განსხვავებით var.
const: აცხადებს მნიშვნელობას ბლოკის მასშტაბის მუდმივისთვის, რომელიც არ შეიძლება შეიცვალოს მისი ინიციალიზაციის შემდეგ. Const ცვლადები დეკლარირებამდე უნდა იყოს ინიციალიზებული. ცვლადებისთვის, რომლებიც მუდმივი რჩება მთელი მათი არსებობის განმავლობაში, ეს ოპტიმალურია.
20. TypeScript-ში აღწერეთ დეკორატორები?
აქსესუარი, თვისება, პარამეტრი, კლასი, ფუნქცია ან დეკორატორი შეიძლება გამოცხადდეს კონკრეტული გზით, როგორც დეკორატორები. დეკორატორები არის ფუნქციები @expression პრეფიქსით, რომლებიც გამოიძახება გაშვების დროს დეტალებით გაფორმებული დეკლარაციის შესახებ.
გამონათქვამმა უნდა შეაფასოს ფუნქცია, რათა დეკორატორებმა იმუშაონ.
TypeScript Decorators უზრუნველყოფს მიზანს დეკლარაციულად დაამატოს ანოტაციები და ინფორმაცია მიმდინარე კოდში.
ჩვენს tsconfig.json ფაილში ან ბრძანების სტრიქონში, თქვენ უნდა გაააქტიუროთ ExperimentalDecorators შემდგენელი ვარიანტი, რათა ჩართოთ დეკორატორების ექსპერიმენტული მხარდაჭერა:
21. TypeScript-ში რას ნიშნავს Mixins?
Mixins არის Javascript-ში მრავალჯერადი გამოყენების ნაწილებიდან კლასების შექმნის და ნაწილობრივი კლასების შერევის ტექნიკა უფრო რთული სრული კლასების შესაქმნელად.
კონცეფცია მარტივია: ფუნქცია B იღებს A კლასს და აბრუნებს ახალ კლასს დამატებული ფუნქციებით, განსხვავებით A კლასისგან, რომელიც აფართოებს B კლასს მისი ფუნქციონირების მისაღებად. ფუნქცია B ამ შემთხვევაში არის mixin.
22. კონკრეტულად რა არის TypeScript-ში Type Aliases?
ტიპის მეტსახელები ცვლის ტიპის სახელს. ტიპის მეტსახელები, ინტერფეისების მსგავსად, შეიძლება გამოყენებულ იქნას პრიმიტივების, გაერთიანებების, ტოპების და სხვა ტიპების დასასახელებლად, რომლებიც სხვაგვარად უნდა განისაზღვროს ხელით.
Aliasing არ ქმნის ახალ ტიპს; უფრო სწორად, ის ცვლის არსებული ტიპის სახელს. პრიმიტივის ალიანსირება ნამდვილად არ არის პრაქტიკული, თუმცა ის შეიძლება მომგებიანი იყოს დოკუმენტაციისთვის.
ტიპის მეტსახელები, ინტერფეისების მსგავსად, შეიძლება იყოს უნივერსალური; საკმარისია დაამატოთ ტიპის პარამეტრები და გამოიყენოთ ისინი ალიას დეკლარაციის მარჯვენა მხარეს.
23. რას ნიშნავს ტერმინი „Scope ცვლადი“?
JavaScript მხარს უჭერს როგორც ლოკალურ, ისე გლობალურ მასშტაბის ცვლადებს. ფარგლები არის ობიექტების, ცვლადების და ფუნქციების კოლექცია.
ცვლადის ორ ასპექტში გამოცხადების მაგალითია:
- ცვლადი ლოკალური მასშტაბით - ის ემსახურება ფუნქციის ობიექტს ფუნქციებში გამოსაყენებლად.
- ცვლადი გლობალური მასშტაბით - ამ ფანჯრის ობიექტის გამოყენება შესაძლებელია როგორც ფუნქციების შიგნით, ასევე მის გარეთ
24. კონკრეტულად რისთვის გამოიყენება noImplicitAny?
TypeScript შემდგენელის მიერ თქვენი პროექტის იმპლიციტური ნებისმიერი ტიპის დამუშავება იცვლება NoImplicitAny თვისებით tsconfig.json კონფიგურაციის ფაილში TypeScript პროექტებისთვის.
noImplicitAny დროშა შეიძლება იყოს true ან false და ყოველთვის ცვალებადია ინიციალიზაციის შემდეგ. იმის გათვალისწინებით, რომ ყველა პროექტი უნიკალურია, არ არსებობს სწორი ან არასწორი პასუხი იმაზე, თუ რა უნდა იყოს ეს რიცხვი.
დროშის ჩართვისა და გამორთვის მდგომარეობებს შორის განსხვავების გაგება დაგეხმარებათ აირჩიოთ დროშის რომელი პარამეტრი გამოიყენოთ.
შემდგენელი არ განსაზღვრავს ცვლადის ტიპს იმის მიხედვით, თუ როგორ გამოიყენება ის, თუ noImplicitAny დროშა დაყენებულია false-ზე (ნაგულისხმევი). ტიპი დაყენებულია ნებისმიერზე ნაგულისხმევად შემდგენლის მიერ.
თუმცა, თუ noImplicitAny ოფცია დაყენებულია true-ზე, შემდგენელი შეეცდება დაადგინოს ტიპი და დააყენებს შედგენის დროის შეცდომას, თუ ამას ვერ შეძლებს.
25. როგორ განსხვავდება კავშირი და გადაკვეთის ტიპები ერთმანეთისგან?
ნულიდან ახალი სახეობების გენერირების ნაცვლად, გაერთიანებები და კვეთის ტიპები საშუალებას გაძლევთ შეადგინოთ და შეურიოთ არსებული ტიპები. როგორც გაერთიანებას, ასევე კვეთას აქვს გამორჩეული თვისებები, რაც მათ სრულყოფილს ხდის გარკვეული გამოყენების შემთხვევებისთვის.
ტიპი, რომელიც შეიძლება იყოს რამდენიმე სახეობიდან ერთ-ერთი, მოიხსენიება როგორც კავშირის ტიპი. ტიპების სია, რომლებიც გამოყენებული იქნება ახალ ტიპში, იყოფა | (ვერტიკალური ზოლი) სიმბოლო გაერთიანების ტიპებში.
მოდით შევხედოთ ილუსტრაციას:
მეორეს მხრივ, კვეთა განისაზღვრება, როგორც ტიპი, რომელიც აერთიანებს მრავალ ტიპს ერთში, აერთიანებს თითოეული ტიპის ყველა მახასიათებელს ახალი ტიპის შესაქმნელად. სახეობების სია, რომლებიც გაერთიანდება, იყოფა კვეთებად & სიმბოლოს გამოყენებით.
განვიხილოთ ილუსტრაცია:
26. როგორ განვსაზღვროთ TypeScript Declare Keyword?
არ არსებობს TypeScript დეკლარაციის ფაილები JavaScript ბიბლიოთეკებში ან ჩარჩოებში. თუმცა, თქვენ უნდა გამოიყენოთ დეკლარირებული საკვანძო სიტყვა, რათა გამოიყენოთ ისინი TypeScript ფაილში შედგენის შეცდომის გარეშე.
როდესაც გსურთ მიუთითოთ ცვლადი, რომელიც უკვე შეიძლება არსებობდეს სადმე სხვაგან, იყენებთ საკვანძო სიტყვას Declare გარემოს დეკლარაციებსა და მეთოდებში.
27. TypeScript-ში რა არის ჯენერიკა?
ინსტრუმენტი სახელწოდებით TypeScript Generics გთავაზობთ მეთოდს მრავალჯერადი გამოყენების ნაწილების წარმოებისთვის. იმის ნაცვლად, რომ იმუშავოს მონაცემთა მხოლოდ ერთ ფორმასთან, მას შეუძლია განავითაროს კომპონენტები, რომლებსაც შეუძლიათ იმოქმედონ მონაცემთა სხვადასხვა ტიპებთან.
გარდა ამისა, ის გთავაზობთ ტიპის უსაფრთხოებას ეფექტურობის ან პროდუქტიულობის შეწირვის გარეშე. ჩვენ შეგვიძლია შევქმნათ ზოგადი კლასები, ზოგადი ფუნქციები, ზოგადი მეთოდები და ზოგადი ინტერფეისები გენერიკების წყალობით.
Generics არის ძალიან აკრეფილი კოლექციები, რადგან ტიპის პარამეტრი იწერება ღია () და დახურვის (>) ფრჩხილებში. ის იყენებს უნიკალური ტიპის ტიპის ცვლას, სახელწოდებით T, რომელიც ნიშნავს ტიპებს.
28. რას ნიშნავს JSX TypeScript-ში?
JSX არის ლეგიტიმური JavaScript, რომელიც შეიძლება გარდაიქმნას ჩაშენებული XML-ის მსგავსი სინტაქსიდან. React ჩარჩოსთან ერთად JSX-მა პოპულარობა მოიპოვა.
პირდაპირი შედგენა, ტიპის გადამოწმება და JSX-ის JavaScript-ში ჩანერგვა მხარდაჭერილია TypeScript-ის მიერ. თქვენ უნდა მისცეთ თქვენს ფაილს a.tsx გაფართოება და გაააქტიუროთ JSX ვარიანტი, თუ გსურთ მისი გამოყენება.
29. რა არის TypeScript Ambients და როდის უნდა გამოვიყენო ისინი?
შემდგენელი ინფორმირებულია რეალური კოდის შესახებ, რომელიც მდებარეობს სხვაგან გარემო დეკლარაციების საშუალებით.
ის გაფუჭდება ყოველგვარი წინასწარი შეტყობინების გარეშე, თუ ჩვენ შევეცდებით ამ წყაროს კოდების გამოყენებას გაშვების დროს, მაგრამ ისინი არ არიან. დოკუმენტის მსგავსი ფაილები არის გარემოს დეკლარაციების ფაილები.
თუ წყარო იცვლება, დოკუმენტაცია უნდა განახლდეს და შემდგენელის პრობლემები წარმოიქმნება, თუ გარემოს დეკლარაციის ფაილი არ შეიცვლება.
გარდა ამისა, ის გვაძლევს საშუალებას გამოვიყენოთ კარგად ცნობილი JavaScript ბიბლიოთეკები, რომლებიც უკვე ფართოდ გამოიყენება, როგორიცაა jQuery, AngularJS, NodeJS და ა.შ.
30. რას გულისხმობთ აბსტრაქტულ კლასში TypeScript-ში?
აბსტრაქტული კლასები განსაზღვრავენ ობიექტის კონტრაქტს პირდაპირი ობიექტის ინსტანციის გარეშე. თუმცა, აბსტრაქტულ კლასს ასევე შეუძლია შესთავაზოს მისი წევრის განხორციელების ინფორმაცია.
ერთი ან მეტი აბსტრაქტული წევრი შეიძლება მოიძებნოს აბსტრაქტულ კლასში. სუპერკლასის აბსტრაქტულ წევრებს უნდა ჰქონდეთ იმპლემენტაცია, რომელიც უზრუნველყოფილია ნებისმიერი კლასის მიერ, რომელიც აფართოებს აბსტრაქტულ კლასს.
მოდით შევხედოთ აბსტრაქტული კლასის TypeScript მაგალითს და როგორ შეიძლება სხვა კლასმა გააფართოვოს იგი. მიუხედავად იმისა, რომ ქვემოთ მოყვანილ მაგალითში ავტომობილის და ველოსიპედის კლასები აფართოებენ Vehicle კლასს, ისინი ახორციელებენ drive() ფუნქციას უნიკალური გზით.
31. კონკრეტულად რა არის TypeScript Map ფაილი?
საწყისი რუკის ფაილი, სახელწოდებით TypeScript Map ფაილი, შეიცავს მონაცემებს ჩვენი ორიგინალური ფაილების შესახებ. წყაროს რუქის ფაილები, ან .map ფაილები, საშუალებას აძლევს ინსტრუმენტებს განათავსონ JavaScript კოდი, რომელიც გამოტანილია და TypeScript წყაროს ფაილებს შორის, რომლებიც წარმოქმნიან მას.
გარდა ამისა, ეს ფაილები შეიძლება მოხმარდეს გამართულებს, რაც საშუალებას გვაძლევს გავასწოროთ TypeScript ფაილი და არა JavaScript ფაილი.
32. TypeScript-ში რა არის ტიპის მტკიცებები?
მიუხედავად იმისა, რომ ტიპის მტკიცება ფუნქციონირებს სხვა ენებზე, როგორიცაა C# და Java, ტიპების გადაცემის მსგავსად, ის არ ახორციელებს ტიპის გადამოწმებას ან მონაცემთა გადანაწილებას.
მიუხედავად იმისა, რომ ტიპის მტკიცება არ მოქმედებს გაშვების დროზე, ტიპის ჩამოსხმა გთავაზობთ ამ მხარდაჭერას. მეორეს მხრივ, ტიპის მტკიცებულებები გამოიყენება მხოლოდ შემდგენელის მიერ და გვაწვდის მითითებებს იმის შესახებ, თუ როგორ გვინდა ჩვენი კოდის შემოწმება.
დასკვნა
დასასრულს, ვიმედოვნებთ, რომ ეს TypeScript ინტერვიუს კითხვები გამოგადგებათ, იქნება ეს დეველოპერი, რომელიც ემზადება სამუშაო გასაუბრებისთვის, თუ დაქირავების მენეჯერი, რომელიც ცდილობს საუკეთესო განმცხადებლის პოვნას.
გახსოვდეთ, რომ დაქირავების პროცესი მოიცავს არა მხოლოდ ტექნიკურ გამოცდილებას. იმის უზრუნველსაყოფად, რომ თქვენ მიიღებთ (ან იპოვით შესაფერისი განმცხადებლის) სამუშაოს, წარსული გამოცდილება და რბილი უნარები თანაბრად მნიშვნელოვანია.
TypeScript ინტერვიუს ბევრი შეკითხვა ღიაა და არ აქვს ერთი სწორი პასუხი, ასე რომ გაითვალისწინეთ.
ინტერვიუერებს აინტერესებთ თქვენი პასუხების დასაბუთება.
ყოველთვის მზად იყავით შემდგომი კითხვებისთვის, სადაც ახსნით, როგორ მიაღწიეთ თქვენს პასუხს. აღწერეთ თქვენი აზროვნების პროცესი.
დატოვე პასუხი