කරුණාකර ටයිප්ස්ක්රිප්ට් භාෂාව යනු කුමක්දැයි ඔබට විස්තර කළ හැකිද?
ජාවාස්ක්රිප්ට් හෝ ලබා ගත හැකි පුස්තකාලවලට කළ නොහැකි එය කළ හැක්කේ කුමක් ද?
කරුණාකර ටයිප්ස්ක්රිප්ට් භාෂාව යනු කුමක්දැයි ඔබට විස්තර කළ හැකිද?
ජාවාස්ක්රිප්ට් හෝ ලබා ගත හැකි පුස්තකාලවලට කළ නොහැකි එය කළ හැක්කේ කුමක් ද?
Answers:
මම මුලින් මෙම පිළිතුර ලිව්වේ ටයිප්ස්ක්රිප්ට් තවමත් උණුසුම් නොවන විට ය. අවුරුදු පහකට පසු, මෙය හරි දළ විශ්ලේෂණයකි, නමුත් වැඩි ගැඹුරක් සඳහා පහත ලොඩ්විජ්ගේ පිළිතුර බලන්න
ටයිප්ස්ක්රිප්ට් යනු ජාවාස්ක්රිප්ට් හි සුපර්සෙට් එකක් වන අතර එය මූලික වශයෙන් විකල්ප ස්ථිතික ටයිප් කිරීම, පන්ති සහ අතුරුමුහුණත් සපයයි. විශාල වාසියක් වන්නේ ඔබ කේතය ටයිප් කරන විට පොදු දෝෂ හඳුනා ගැනීම සඳහා වඩාත් හොඳ පරිසරයක් සැපයීමට IDEs සක්රීය කිරීමයි .
මා අදහස් කරන දේ පිළිබඳ අදහසක් ලබා ගැනීමට , භාෂාව පිළිබඳ මයික්රොසොෆ්ට් හඳුන්වාදීමේ වීඩියෝව බලන්න .
විශාල ජාවාස්ක්රිප්ට් ව්යාපෘතියක් සඳහා, ටයිප්ස්ක්රිප්ට් භාවිතා කිරීමෙන් වඩාත් ශක්තිමත් මෘදුකාංගයක් ලැබිය හැකි අතර සාමාන්ය ජාවාස්ක්රිප්ට් යෙදුමක් ක්රියාත්මක වන තැන යෙදවිය හැකිය.
එය විවෘත මූලාශ්රයකි, නමුත් ඔබට යතුරු ලියනය කරන විට දක්ෂ ඉන්ටෙලිසෙන්ස් එකක් ලැබෙන්නේ ඔබ සහාය දක්වන IDE එකක් භාවිතා කරන්නේ නම් පමණි. මුලදී, මෙය මයික්රොසොෆ්ට් හි විෂුවල් ස්ටුඩියෝ පමණි (බ්ලොග් සටහනේ ද සටහන් විය මිගෙල් ඩි ඉකාසා සටහනේ ). මේ දිනවල අනෙකුත් IDEs ද ටයිප්ස්ක්රිප්ට් සහාය ලබා දෙයි .
තියෙනවා CoffeeScript , නමුත් ඇත්තටම වෙනස් අරමුණ සේවය කරයි. IMHO, කෝපි ස්ක්රිප්ට් මිනිසුන්ට කියවීමේ හැකියාව ලබා දෙයි, නමුත් ටයිප්ස්ක්රිප්ට් එහි විකල්ප ස්ථිතික ටයිප් කිරීම හරහා මෙවලම් සඳහා ගැඹුරු කියවීමේ හැකියාව ලබා දෙයි ( තව ටිකක් විවේචන සඳහා මෙම මෑත බ්ලොග් සටහන බලන්න ). ඩාර්ට් ද ඇත නමුත් එය ජාවාස්ක්රිප්ට් වෙනුවට ආදේශ කිරීමකි (එයට ජාවාස්ක්රිප්ට් කේතය නිපදවිය හැකි වුවද )
උදාහරණයක් ලෙස, මෙන්න ටයිප්ස්ක්රිප්ට් කිහිපයක් (ඔබට මෙය ටයිප්ස්ක්රිප්ට් ක්රීඩා පිටියේ සෙල්ලම් කළ හැකිය )
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
මෙන්න එය නිපදවන ජාවාස්ක්රිප්ට්
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
ටයිප්ස්ක්රිප්ට් සාමාජික විචල්යයන් සහ පන්ති ක්රම පරාමිතීන් නිර්වචනය කරන්නේ කෙසේදැයි බලන්න. ජාවාස්ක්රිප්ට් වෙත පරිවර්ථනය කිරීමේදී මෙය ඉවත් කරනු ලැබේ, නමුත් සංඛ්යාත්මක වර්ගයක් ඉදිකිරීම්කරු වෙත යැවීම වැනි දෝෂ හඳුනා ගැනීමට IDE සහ සම්පාදකයා භාවිතා කරයි.
එය පැහැදිලිව ප්රකාශයට පත් නොකළ වර්ග අනුමාන කිරීමට ද හැකියාව ඇත, නිදසුනක් ලෙස, එය greet()
නූලක් ලබා දෙන ක්රමය තීරණය කරයි .
බොහෝ බ්රව්සර් සහ IDEs ප්රභව සිතියම් හරහා සෘජු නිදොස්කරණය සඳහා සහය ලබා දේ. වැඩි විස්තර සඳහා මෙම සිරස් පිටාර ගැලීමේ ප්රශ්නය බලන්න: විෂුවල් ස්ටුඩියෝ සමඟ ටයිප්ස්ක්රිප්ට් කේතය නිදොස් කිරීම
මම මුලින් මෙම පිළිතුර ලිව්වේ ටයිප්ස්ක්රිප්ට් තවමත් උණුසුම් නොවන විට ය. තවත් විස්තර සඳහා මෙම ප්රශ්නයට ලොඩ්විජ්ක්ගේ පිළිතුර බලන්න .
ටයිප්ස්ක්රිප්ට් යනු ජාවාස්ක්රිප්ට් හි ටයිප් කරන ලද සුපර්සෙට් එකක් වන අතර එය සරල ජාවාස්ක්රිප්ට් - ටයිප්ස්ක්රිප්ට්ලැන්ග්.ආර් .
ජාවාස්ක්රිප්ට් යනු ක්රමලේඛන භාෂාවක් වන අතර එය EMCA හි තාක්ෂණික කමිටුව 39 විසින් සංවර්ධනය කරන ලද අතර එය විවිධ පාර්ශවකරුවන්ගෙන් සැදුම්ලත් පිරිසකි. TC39 යනු ECMA විසින් මෙහෙයවනු ලබන කමිටුවකි : අභ්යන්තර ප්රමිති සංවිධානයකි. ජාවාස්ක්රිප්ට් විවිධ වෙළෙන්දන් විසින් විවිධ ක්රියාත්මක කිරීම් සිදු කරයි (උදා: ගූගල්, මයික්රොසොෆ්ට්, ඔරකල්, ආදිය). ජාවාස්ක්රිප්ට් හි පරමාර්ථය වන්නේ වෙබයේ භාෂාවයි.
ටයිප්ස්ක්රිප්ට් යනු ජාවාස්ක්රිප්ට් භාෂාවේ සුපිරි කට්ටලයක් වන අතර එය තනි විවෘත කේත සම්පාදකයක් ඇති අතර එය ප්රධාන වශයෙන් තනි වෙළෙන්දෙකු විසින් සංවර්ධනය කර ඇත: මයික්රොසොෆ්ට්. ටයිප්ස්ක්රිප්ට් හි පරමාර්ථය වන්නේ ටයිප් පද්ධතියක් හරහා ඉක්මනින් වැරදි හසු කර ගැනීමට සහ ජාවාස්ක්රිප්ට් සංවර්ධනය වඩාත් කාර්යක්ෂම කිරීමට උපකාර කිරීමයි.
අත්යවශ්යයෙන්ම ටයිප්ස්ක්රිප්ට් සිය අරමුණු තුනකින් සාක්ෂාත් කරගනී:
නවීන ජාවාස්ක්රිප්ට් විශේෂාංග සඳහා සහය - ජාවාස්ක්රිප්ට් භාෂාව (ධාවන කාලය නොවේ) ECMAScript ප්රමිතීන් හරහා ප්රමිතිකරණය කර ඇත. සියලුම බ්රව්සර් සහ ජාවාස්ක්රිප්ට් ධාවන වේලාවන් සියලු ECMAScript ප්රමිතීන්ගේ සියලුම අංගයන්ට සහය නොදක්වයි (මෙම දළ විශ්ලේෂණය බලන්න ). ටයිප්ස්ක්රිප්ට් නවතම ECMAScript විශේෂාංග භාවිතා කිරීමට ඉඩ දෙන අතර ඒවා ඔබ තෝරාගත් පැරණි ECMAScript ඉලක්ක වෙත පරිවර්තනය කරයි ( සම්පාදක විකල්පය යටතේ සම්පාදක ඉලක්ක ලැයිස්තුව බලන්න --target
). මෙයින් අදහස් කරන්නේ ඔබට මොඩියුල, ලැම්බඩා කාර්යයන්, පන්ති, පැතිරීමේ ක්රියාකරු සහ විනාශ කිරීම වැනි නව විශේෂාංග ආරක්ෂිතව භාවිතා කළ හැකි අතර පැරණි බ්රව්සර් සහ ජාවාස්ක්රිප්ට් ධාවන වේලාවන් සමඟ පසුපසට අනුකූල වන බවයි.
උසස් වර්ගයේ පද්ධතිය - වර්ගයේ සහාය ECMAScript ප්රමිතියේ කොටසක් නොවන අතර එය කිසි විටෙකත් ජාවාස්ක්රිප්ට්හි සම්පාදනය කරන ලද ස්වභාවය වෙනුවට අර්ථකථනය කරන ලද ස්වභාවය නිසා නොවනු ඇත. ටයිප්ස්ක්රිප්ට් වර්ගයේ පද්ධතිය ඇදහිය නොහැකි තරම් පොහොසත් වන අතර ඒවාට ඇතුළත් වන්නේ: අතුරුමුහුණත්, එනූම්ස්, දෙමුහුන් වර්ග, ජනක විද්යාව, යුනියන් / ඡේදනය වන වර්ග, ප්රවේශ විකරණකාරක සහ තවත් බොහෝ දේ. ටයිප්ස්ක්රිප්ට් හි නිල වෙබ් අඩවිය මෙම විශේෂාංග පිළිබඳ දළ විශ්ලේෂණයක් ලබා දෙයි. ටයිප්ස්ක්රිප්ට් වර්ගයේ පද්ධතිය වෙනත් බොහෝ ටයිප් කළ භාෂාවන්ට සමානය. සමහර අවස්ථාවල එය වඩා බලවත් ය.
සංවර්ධක මෙවලම් සහාය - වර්ධක සම්පාදනය සහ IDE ඒකාබද්ධ කිරීම යන දෙකටම සහාය දැක්වීමට පසුබිම් ක්රියාවලියක් ලෙස ටයිප්ස්ක්රිප්ට් සම්පාදකයාට ක්රියාත්මක විය හැකි අතර එමඟින් ඔබට වඩාත් පහසුවෙන් සැරිසැරීමට, ගැටළු හඳුනා ගැනීමට, හැකියාවන් පරීක්ෂා කිරීමට සහ ඔබේ කේත පදනම නැවත සකස් කිරීමට හැකිය.
ජාවාස්ක්රිප්ට් සමඟ සම්පාදනය කරන වෙනත් භාෂාවන්ට සාපේක්ෂව ටයිප්ස්ක්රිප්ටයට අද්විතීය දර්ශනයක් ඇත. ජාවාස්ක්රිප්ට් කේතය වලංගු ටයිප්ස්ක්රිප්ට් කේතය; ටයිප්ස්ක්රිප්ට් යනු ජාවාස්ක්රිප්ට්හි සුපිරි කට්ටලයකි. ඔබට ඔබගේ .js
ලිපිගොනු ගොනුවලට නැවත නම් .ts
කර ටයිප්ස්ක්රිප්ට් භාවිතා කිරීම ආරම්භ කළ හැකිය (පහත "ජාවාස්ක්රිප්ට් අන්තර් ක්රියාකාරිත්වය" බලන්න). ටයිප්ස්ක්රිප්ට් ලිපිගොනු කියවිය හැකි ජාවාස්ක්රිප්ට් වෙත සම්පාදනය කර ඇති අතර එමඟින් නැවත සංක්රමණය වීමට හැකි වන අතර සම්පාදනය කරන ලද ටයිප්ස්ක්රිප්ට් තේරුම් ගැනීම කිසිසේත් අපහසු නොවේ. ටයිප්ස්ක්රිප්ට් ජාවාස්ක්රිප්ට් හි සාර්ථකත්වයන් මත ගොඩනැඟෙන අතර එහි දුර්වලතා වැඩි දියුණු කරයි.
එක් අතකින්, නවීන ECMAScript ප්රමිතීන් ගෙන එය පැරණි ජාවාස්ක්රිප්ට් අනුවාදයන් සමඟ සම්පාදනය කරන අනාගත සාක්ෂි මෙවලම් ඔබ සතුව ඇති අතර බාබෙල් වඩාත් ජනප්රිය එකක් වේ. අනෙක් අතට, ඔබට ජාවාස්ක්රිප්ට් වෙතින් සම්පූර්ණයෙන්ම වෙනස් විය හැකි භාෂා ඇත, ඒවා කෝපි ස්ක්රිප්ට්, ක්ලෝජුර්, ඩාර්ට්, එල්ම්, හැක්ස්, ස්කලා.ජේ වැනි ජාවාස්ක්රිප්ට් ඉලක්ක ලැයිස්තුවකරයි. මෙම භාෂාවන්, ජාවාස්ක්රිප්ට් හි අනාගතය කවදා හෝ ගෙන යා හැකි තැනට වඩා හොඳ විය හැකි වුවත්, ඔවුන්ගේ අනාගතය සහතික කිරීම සඳහා ප්රමාණවත් දරුකමට හදා ගැනීමක් සොයා නොගැනීමේ වැඩි අවදානමක් ඇත. මෙම භාෂාවන්ගෙන් සමහරක් සඳහා පළපුරුදු සංවර්ධකයින් සොයා ගැනීමට ඔබට තවත් කරදර ඇති විය හැක, නමුත් ඔබ සොයා ගන්නා ඒවා බොහෝ විට වඩාත් උද්යෝගිමත් විය හැකිය. ජාවාස්ක්රිප්ට් සමඟ අන්තර් ක්රියා කිරීමද තව ටිකක් සම්බන්ධ විය හැකිය, මන්ද ඒවා ජාවාස්ක්රිප්ට් ඇත්ත වශයෙන්ම වඩා දුරින් ඉවත් කර ඇති බැවිනි.
ටයිප්ස්ක්රිප්ට් මෙම අන්ත දෙක අතර පිහිටා ඇති අතර එමඟින් අවදානම සමතුලිත කරයි. ටයිප්ස්ක්රිප්ට් යනු ඕනෑම ප්රමිතියකින් අවදානම් සහගත තේරීමක් නොවේ. ඔබ ජාවාස්ක්රිප්ට් ගැන හුරුපුරුදු නම් පුරුදු වීමට ඉතා සුළු උත්සාහයක් අවශ්ය වේ, එය සම්පූර්ණයෙන්ම වෙනස් භාෂාවක් නොවන බැවින් විශිෂ්ට ජාවාස්ක්රිප්ට් අන්තර් ක්රියාකාරීත්ව සහයෝගයක් ඇති අතර එය මෑතකදී දරුකමට හදා ගැනීමක් දැක තිබේ.
ජාවාස්ක්රිප්ට් ගතිකව ටයිප් කර ඇත. මෙයින් අදහස් කරන්නේ ධාවන වේලාවේදී එය ක්ෂණිකව ක්ෂණිකව ක්රියාත්මක වන තුරු විචල්යතාව කුමක්දැයි ජාවාස්ක්රිප්ට් නොදන්නා බවයි. මෙයින් අදහස් කරන්නේ එය ප්රමාද වැඩියි. ටයිප්ස්ක්රිප්ට් ජාවාස්ක්රිප්ට් සඳහා ටයිප් සහය එක් කරයි. ඔබ යම් ආකාරයක විචල්යයක් ඇති බවට ව්යාජ උපකල්පන නිසා ඇති වන දෝෂයන් ඔබ ඔබේ කාඩ්පත් නිවැරදිව වාදනය කරන්නේ නම් (ඔබ ඔබේ කේතය කෙතරම් තදින් ටයිප් කරනවාද යන්න හෝ ඔබේ කේතය ටයිප් කරන්නේ නම් එය ඔබට භාරයි) සම්පූර්ණයෙන්ම තුරන් කළ හැකිය.
ටයිප්ස්ක්රිප්ට් ටයිප් කිරීම ටිකක් පහසු කරයි. උදාහරණයක් ලෙස: var x = "hello"
TypeScript හි සමාන වේ var x : string = "hello"
. වර්ගය හුදෙක් එහි භාවිතයෙන් අනුමාන කෙරේ. ඔබ පැහැදිලිවම වර්ග ටයිප් නොකලත්, ධාවන කාල දෝෂයක් ඇතිවිය හැකි යමක් කිරීමෙන් ඔබව බේරා ගැනීමට ඒවා තවමත් පවතී.
ටයිප්ස්ක්රිප්ට් පෙරනිමියෙන් විකල්ප ලෙස ටයිප් කරයි. නිදසුනක් ලෙස function divideByTwo(x) { return x / 2 }
ටයිප්ස්ක්රිප්ට් හි වලංගු ශ්රිතයක් වන අතර එය ඕනෑම ආකාරයක පරාමිතියක් සමඟ හැඳින්විය හැකිය, එය නූලකින් ඇමතීමෙන් පැහැදිලිවම ධාවන කාල දෝෂයක් ඇති වේ. ඔබ ජාවාස්ක්රිප්ට් හි පුරුදු වූවාක් මෙන්. මෙය ක්රියාත්මක වන්නේ, කිසිදු වර්ගයක් නිශ්චිතවම පවරා නොමැති විට සහ වර්ගය අනුමාන කළ නොහැකි වූ විට, බෙදීම් බයිටූ උදාහරණයේ දී මෙන්, ටයිප්ස්ක්රිප්ට් විසින් ව්යංගයෙන් වර්ගය පවරනු ඇත any
. මෙයින් අදහස් කරන්නේ DivByTwo ශ්රිතයේ අත්සන ස්වයංක්රීයව බවට පත්වන function divideByTwo(x : any) : any
බවයි. මෙම හැසිරීම තහනම් කිරීම සඳහා සම්පාදක ධජයක් ඇත : --noImplicitAny
. මෙම ධජය සක්රීය කිරීමෙන් ඔබට වැඩි ආරක්ෂාවක් ලැබෙනු ඇති අතර එයින් අදහස් කරන්නේ ඔබට තවත් ටයිප් කිරීමක් කළ යුතු බවයි.
වර්ග වලට ඒවා හා සම්බන්ධ පිරිවැයක් ඇත. පළමුවෙන්ම, ඉගෙනීමේ වක්රය ඇති අතර, දෙවනුව, ඇත්ත වශයෙන්ම, නිසි තද ටයිප් කිරීම ද භාවිතා කරමින් කේත පදනමක් සැකසීමට ඔබට තව ටිකක් කාලය වැය වනු ඇත. මගේ අත්දැකීම් අනුව, ඔබ අනෙක් අය සමඟ බෙදාගන්නා ඕනෑම බැරෑරුම් කේත පදනමක් මත මෙම පිරිවැය මුළුමනින්ම වටී. ගිතූබ් හි ක්රමලේඛන භාෂා සහ කේතයේ ගුණාත්මකභාවය පිළිබඳ විශාල පරිමාණ අධ්යයනයකින් ඇඟවෙන්නේ, “සංඛ්යාත්මකව ටයිප් කළ භාෂාවන්, සාමාන්යයෙන්, ගතික වර්ගවලට වඩා අඩු දෝෂ සහිත වන අතර, ශක්තිමත් ටයිප් කිරීම එකම ආකාරයකින් දුර්වල ටයිප් කිරීමට වඩා හොඳය” යන්නයි.
ටයිප්ස්ක්රිප්ට් ජාවාස්ක්රිප්ට් වලට වඩා අඩු දෝෂ සහිත බව මෙම ලිපියෙන්ම සොයා ගැනීම සිත්ගන්නා කරුණකි:
ධනාත්මක සංගුණක ඇති අය සඳහා, භාෂාව සම්බන්ධ වී ඇත්තේ, සෙටෙරිස් පරිබුස්, අඩුපාඩු නිවැරදි කිරීම් විශාල සංඛ්යාවක් සමඟ ය. මෙම භාෂාවන්ට C, C ++, JavaScript , Objective-C, Php සහ Python ඇතුළත් වේ. Clojure, Haskell, Ruby, Scala, සහ TypeScript යන භාෂා සියල්ලටම negative ණාත්මක සංගුණක ඇති අතර එයින් ඇඟවෙන්නේ දෝෂ නිරාකරණය කිරීමේ ප්රති in ලවලට මෙම භාෂාවන් සාමාන්යයට වඩා අඩු බවයි.
ටයිප්ස්ක්රිප්ට් සමඟ ඇති සංවර්ධන අත්දැකීම් ජාවාස්ක්රිප්ට් වලට වඩා විශාල දියුණුවකි. IDE එහි පොහොසත් වර්ගයේ තොරතුරු මත ටයිප්ස්ක්රිප්ට් සම්පාදකයා විසින් තත්ය කාලීනව දැනුම් දෙනු ලැබේ. මෙය ප්රධාන වාසි කිහිපයක් ලබා දෙයි. නිදසුනක් ලෙස, ටයිප්ස්ක්රිප්ට් සමඟ, ඔබේ සම්පූර්ණ කේත පදනම හරහා නැවත නම් කිරීම වැනි ප්රතික්රියාකාරක ආරක්ෂිතව කළ හැකිය. කේත සම්පුර්ණ කිරීමෙන්, පුස්තකාලයක් විසින් පිරිනමනු ලබන ඕනෑම කාර්යයක් සඳහා ඔබට පේළිගත උපකාර ලබා ගත හැකිය. තවත් ඒවා මතක තබා ගැනීමට හෝ සබැඳි යොමු කිරීම් දෙස බැලීමට අවශ්ය නොවේ. ඔබ කාර්යබහුල කේතීකරණයේ යෙදී සිටියදී සම්පාදනයේ දෝෂ IDE හි රතු පැහැ රේඛාවක් සමඟ කෙලින්ම වාර්තා වේ. සියල්ලට ම, මෙය ජාවාස්ක්රිප්ට් සමඟ වැඩ කිරීමට සාපේක්ෂව tivity ලදායිතාවයේ සැලකිය යුතු ලාභයක් ලබා ගැනීමට ඉඩ සලසයි. කෙනෙකුට වැඩි කාලයක් කේතීකරණය හා අඩු නිදොස් කිරීම සඳහා ගත කළ හැකිය.
විෂුවල් ස්ටුඩියෝ කෝඩ්, වෙබ්ස්ටෝම්, ඇටෝම් සහ සබ්ලයිම් වැනි ටයිප්ස්ක්රිප්ට් සඳහා විශිෂ්ට සහයෝගයක් ඇති පුළුල් පරාසයක IDEs ඇත.
පෝරමයේ ධාවන දෝෂ cannot read property 'x' of undefined
හෝ undefined is not a function
ජාවාස්ක්රිප්ට් කේතයේ දෝෂ නිසා බහුලව සිදු වේ. ටයිප්ස්ක්රිප්ට් සම්පාදකයාට නොදන්නා විචල්යයක් භාවිතා කළ නොහැකි බැවින් ( any
ටයිප් කළ විචල්යයන්ගේ ගුණාංග හැර) ටයිප්ස්ක්රිප්ට් මේ ආකාරයේ දෝෂ ඇතිවීමේ සම්භාවිතාව දැනටමත් අඩු කරයි . සකසා ඇති විචල්යයක් වැරදියට භාවිතා කිරීමට තවමත් හැකි ය undefined
. කෙසේ වෙතත්, ටයිප්ස්ක්රිප්ට් හි 2.0 අනුවාදය සමඟ ඔබට මේ ආකාරයේ දෝෂ සියල්ලම එකවරම ඉවත් කළ හැකිය. මෙය පහත පරිදි ක්රියාත්මක වේ:
දැඩි ශූන්ය චෙක්පත් සක්රීය කර ඇති විට ( --strictNullChecks
සම්පාදක ධජය) ටයිප්ස්ක්රිප්ට් සම්පාදකයා undefined
විචල්යයකට පැවරීමට ඉඩ නොදෙනු ඇත. උදාහරණයක් ලෙස, let x : number = undefined
සම්පාදක දෝෂයක් ඇති වේ. undefined
අංකයක් නොවන බැවින් මෙය වර්ග න්යායට හොඳින් ගැලපේ . එක් කළ හැකි ය x
ක මුදලක් වර්ගය විය number
හා undefined
මෙම නිවැරදි කිරීමට: let x : number | undefined = undefined
.
වර්ගයක් අහෝසි කළ හැකි බව දැනගත් පසු, එයින් අදහස් වන්නේ එය වටිනාකමක් ඇති වර්ගයක් null
හෝ undefined
, ඔබේ කේතයට ආරක්ෂිතව විචල්යයක් භාවිතා කළ හැකිද නැද්ද යන්න පාලක ප්රවාහ පදනම් කරගත් විශ්ලේෂණයන් මගින් ටයිප්ස්ක්රිප්ට් සම්පාදකයාට තීරණය කළ හැකිය. වෙනත් වචන වලින් කිවහොත්, ඔබ විචල්යයක් පරික්ෂා කරන විට undefined
නිදසුනක් ලෙස if
ටයිප්ස්ක්රිප්ට් සම්පාදකයා විසින් ඔබේ කේතයේ පාලන ප්රවාහයේ එම ශාඛාවේ වර්ගය තවදුරටත් අහෝසි නොවන බවත් එය ආරක්ෂිතව භාවිතා කළ හැකි බවත් අනුමාන කරයි. මෙන්න සරල උදාහරණයක්:
let x: number | undefined;
if (x !== undefined) x += 1; // this line will compile, because x is checked.
x += 1; // this line will fail compilation, because x might be undefined.
ටයිප්ස්ක්රිප්ට් හි සම-නිර්මාණකරු ඇන්ඩර්ස් හෙජල්ස්බර්ග් විසින් මෙම අංගය පිළිබඳ සවිස්තරාත්මක පැහැදිලි කිරීමක් සහ නිරූපණයක් ලබා දෙන ලදී: වීඩියෝව (44:30 සිට 56:30 දක්වා).
ටයිප්ස්ක්රිප්ට් භාවිතා කිරීමට ඔබට ජාවාස්ක්රිප්ට් කේතයට සම්පාදනය කිරීම සඳහා ගොඩනැගීමේ ක්රියාවලියක් අවශ්ය වේ. ඔබේ ව්යාපෘතියේ ප්රමාණය මත පදනම්ව ගොඩනැගීමේ ක්රියාවලිය සාමාන්යයෙන් ගත වන්නේ තත්පර කිහිපයක් පමණි. ටයිප්ස්ක්රිප්ට් සම්පාදකයා වර්ධක සම්පාදනයට ( --watch
සම්පාදක ධජය) සහය දක්වයි, එවිට සියලු පසු වෙනස්වීම් වැඩි වේගයකින් සම්පාදනය කළ හැකිය.
ටයිප්ස්ක්රිප්ට් සම්පාදකයාට ජනනය කරන ලද .js ලිපිගොනු වල ප්රභව සිතියම් තොරතුරු පේළිගත කිරීමට හෝ වෙනම .map ගොනු සෑදිය හැකිය. ජාවාස්ක්රිප්ට් හි ඇති රේඛා ටයිප්ස්ක්රිප්ට් තුළ ජනනය කළ ඒවාට සම්බන්ධ කිරීම සඳහා ක්රෝම් ඩිව්ටූල්ස් සහ වෙනත් අයිඩීඊ වැනි උපයෝගීතා නිදොස් කිරීම මඟින් ප්රභව සිතියම් තොරතුරු භාවිතා කළ හැකිය. මෙමඟින් ඔබේ ටයිප්ස්ක්රිප්ට් කේතය මත සෘජුවම ධාවන වේලාවන්හි බ්රේක්පොයින්ට් සැකසීමට සහ විචල්යයන් පරීක්ෂා කිරීමට ඔබට හැකි වේ. ප්රභව සිතියම් තොරතුරු ඉතා හොඳින් ක්රියාත්මක වේ, එය ටයිප්ස්ක්රිප්ටයට බොහෝ කලකට පෙරය, නමුත් ටයිප්ස්ක්රිප්ට් නිදොස් කිරීම ජාවාස්ක්රිප්ට් කෙලින්ම භාවිතා කරන විට තරම් විශාල නොවේ. this
උදාහරණයක් ලෙස මූල පදය ගන්න . this
ES2015 සිට වසා දැමීම් වටා ඇති යතුරු පදයේ වෙනස් වූ අර්ථකථන හේතුවෙන් , ක්රියාකාරී වේලාවේදී this
විචල්යයක් ලෙස හැඳින්විය හැක _this
( මෙම පිළිතුර බලන්න). නිදොස්කරණය කිරීමේදී මෙය ඔබව ව්යාකූල කළ හැකි නමුත් සාමාන්යයෙන් ඔබ ඒ ගැන දන්නේ නම් හෝ ජාවාස්ක්රිප්ට් කේතය පරීක්ෂා කරන්නේ නම් ගැටළුවක් නොවේ. බාබෙල් එකම ආකාරයේ ගැටලුවකට මුහුණ දෙන බව සැලකිල්ලට ගත යුතුය.
ටයිප්ස්ක්රිප්ට් සම්පාදකයාට කළ හැකි තවත් උපක්රම කිහිපයක් තිබේ, ඒවා නම් සැරසිලි කරුවන් මත පදනම් වූ කේත ජනනය කිරීම, විවිධ මොඩියුල පද්ධති සඳහා මොඩියුලය පැටවීමේ කේතය ජනනය කිරීම සහ ජේඑස්එක්ස් විග්රහ කිරීම ය . කෙසේ වෙතත්, ඔබට ටයිප්ස්ක්රිප්ට් සම්පාදකයාට අමතරව ගොඩනැගීමේ මෙවලමක් අවශ්ය වනු ඇත. උදාහරණයක් ලෙස, ඔබට ඔබේ කේතය සම්පීඩනය කිරීමට අවශ්ය නම්, එසේ කිරීම සඳහා ඔබේ ගොඩනැඟීමේ ක්රියාවලියට වෙනත් මෙවලම් එකතු කිරීමට සිදුවේ.
සඳහා ලබා ගත හැකි TypeScript සම්පාදනය කිරිමේ ප්ලගින ඇත Webpack , ඔවුන්ගේ උගුරෙන් පහළට , සංචිතයකින් සමන්විත වේ.මෙම හා එච්චරමයි අතන වෙනත් ඕනෑම ජාවාස්ක්රිප්ට් ගොඩ නැඟීමට මෙවලමක්. ටයිප්ස්ක්රිප්ට් ප්රලේඛනයට ඒවා සියල්ලම ආවරණය වන පරිදි ගොඩනැඟීමේ මෙවලම් සමඟ ඒකාබද්ධ කිරීම පිළිබඳ අංශයක් ඇත . ඒ linter ඔබ ඊටත් වඩා ගොඩ නැඟීමට කාලය පරීක්ෂා කිරීම කැමතියි නඩුව ද ඇත. කෝණික 2, ප්රතික්රියා, එම්බර්, සිස්ටම් ජේඑස්, වෙබ් පැක්, ගල්ප් වැනි වෙනත් තාක්ෂණයන් සමඟ ඒකාබද්ධව ටයිප්ස්ක්රිප්ට් සමඟ ආරම්භ කිරීමට ඔබට හැකි බීජ ව්යාපෘති විශාල ප්රමාණයක් ඇත.
ටයිප්ස්ක්රිප්ට් ජාවාස්ක්රිප්ට් සමඟ ඉතා සමීපව සම්බන්ධ වී ඇති හෙයින් එයට විශාල අන්තර් ක්රියාකාරී හැකියාවන් ඇත, නමුත් ටයිප්ස්ක්රිප්ට්හි ජාවාස්ක්රිප්ට් පුස්තකාල සමඟ වැඩ කිරීමට අමතර වැඩ කිහිපයක් අවශ්ය වේ. TypeScript අර්ථ දැක්වීම් ද TypeScript සම්පාදක වැනි එම කාර්යය ඇමතුම් අවබෝධකරගත් නිසා අවශ්ය _.groupBy
හෝ angular.copy
හෝ $.fadeOut
ඇත්ත නීති විරෝධී ප්රකාශ නොවේ. මෙම කාර්යයන් සඳහා අර්ථ දැක්වීම් .d.ts
ගොනු තුළ තබා ඇත .
අර්ථ දැක්වීමකට ගත හැකි සරලම ආකාරය නම් හඳුනාගැනීමක් ඕනෑම ආකාරයකින් භාවිතා කිරීමට ඉඩ දීමයි. උදාහරණයක් ලෙස, ලොඩාෂ් භාවිතා කරන විට , තනි පේළි අර්ථ දැක්වීමේ ගොනුවක් declare var _ : any
ඔබට අවශ්ය ඕනෑම ශ්රිතයක් ඇමතීමට ඉඩ දෙයි _
, නමුත් ඇත්ත වශයෙන්ම, ඔබට තවමත් වැරදි _.foobar()
කිරීමට හැකිය : නෛතික ටයිප්ස්ක්රිප්ට් ඇමතුමක් වනු ඇත, නමුත් ඇත්ත වශයෙන්ම , ක්රියාත්මක වන වේලාවට නීති විරෝධී ඇමතුමක්. ඔබට නිසි ආකාරයේ සහය සහ කේත සම්පුර්ණ කිරීමට අවශ්ය නම් ඔබේ අර්ථ දැක්වීමේ ගොනුව වඩාත් නිවැරදි විය යුතුය ( උදාහරණයක් සඳහා ලොඩාෂ් අර්ථ දැක්වීම් බලන්න).
ටයිප්ස්ක්රිප්ට් සම්පාදකයා විසින් ස්වකීය වර්ගයේ අර්ථ දැක්වීම් සමඟ පෙර ඇසුරුම් කර ඇති එන්පීඑම් මොඩියුල ස්වයංක්රීයව වටහා ගනු ලැබේ ( ප්රලේඛනය බලන්න ). තමන්ගේම නිර්වචන ඇතුළත් නොවන වෙනත් අර්ධ ජනප්රිය ජාවාස්ක්රිප්ට් පුස්තකාලයක් සඳහා එහි සිටින කවුරුහරි දැනටමත් වෙනත් එන්පීඑම් මොඩියුලයක් හරහා වර්ග අර්ථ දැක්වීම් ලබා දී ඇත. මෙම මොඩියුල "@ වර්ග /" උපසර්ගය හා නමින් Github ගබඩාව සිට පැමිණ සිටිති DefinitelyTyped .
එක් අවවාදයක් ඇත: වර්ගය අර්ථ දැක්වීම් ඔබ ක්රියාත්මක වන වේලාවේ භාවිතා කරන පුස්තකාලයේ අනුවාදයට අනුරූප විය යුතුය. ඒවා එසේ නොවේ නම්, ටයිප්ස්ක්රිප්ට් මඟින් ඔබට ශ්රිතයක් ඇමතීමට හෝ පවතින විචල්යයක් අවලංගු කිරීමට ඉඩ නොදේ. එසේ නැතහොත් ශ්රිතයක් ඇමතීමට හෝ නොපවතින විචල්යයක් අවලංගු කිරීමට ඉඩ දෙනු ඇත. . එබැවින් ඔබ භාවිතා කරන පුස්තකාලයේ නිවැරදි අනුවාදය සඳහා වර්ග අර්ථ දැක්වීම්වල නිවැරදි අනුවාදය පටවන බවට වග බලා ගන්න.
ඇත්තම කිව්වොත්, මේ සඳහා සුළු කරදරයක් ඇති අතර එය ඔබ ටයිප්ස්ක්රිප්ට් තෝරා නොගැනීමට එක් හේතුවක් විය හැකිය, නමුත් ඒ වෙනුවට වර්ග අර්ථ දැක්වීම් ලබා ගැනීමෙන් පීඩා විඳින්නේ නැති බාබෙල් වැනි දෙයක් සඳහා යන්න. අනෙක් අතට, ඔබ කරන්නේ කුමක්දැයි ඔබ දන්නේ නම් වැරදි හෝ නැතිවූ අර්ථ දැක්වීම් ලිපිගොනු නිසා ඇති වන ඕනෑම ගැටළුවක් පහසුවෙන් ජය ගත හැකිය.
ඕනෑම .js
ගොනුවක් ගොනුවකට නැවත නම් කළ හැකි අතර එය .ts
ජාවාස්ක්රිප්ට් කේතය ප්රතිදානයක් ලෙස ලබා ගැනීමට ටයිප්ස්ක්රිප්ට් සම්පාදකය හරහා ධාවනය කළ හැකිය (එය මුලින් කෘතිමව නිවැරදි නම්). ටයිප්ස්ක්රිප්ට් සම්පාදකයාට සම්පාදක දෝෂ ඇති වූ විට පවා එය .js
ගොනුවක් නිපදවනු ඇත . ධජය .js
සමඟ ලිපිගොනු ආදානය ලෙස පවා එයට පිළිගත හැකිය --allowJs
. මෙය ඔබට වහාම ටයිප්ස්ක්රිප්ට් සමඟ ආරම්භ කිරීමට ඉඩ දෙයි. අවාසනාවකට මෙන්, සම්පාදක දෝෂ ආරම්භයේදීම සිදුවිය හැකිය. මේවා වෙනත් සම්පාදකයින් සමඟ ඔබ පුරුදු වී ඇති ආකාරයට පෙන්වීම නැවැත්වීමේ දෝෂ නොවන බව යමෙකුට මතක තබා ගත යුතුය.
ජාවාස්ක්රිප්ට් ව්යාපෘතියක් ටයිප්ස්ක්රිප්ට් ව්යාපෘතියක් බවට පරිවර්තනය කිරීමේදී ආරම්භයේ දී කෙනෙකුට සම්පාදනය කිරීමේ දෝෂයන් ටයිප්ස්ක්රිප්ට් ස්වභාවය අනුව වැළැක්විය නොහැක. ටයිප්ස්ක්රිප්ට් වලංගුභාවය සඳහා සියලු කේත පරික්ෂා කරන අතර එමඟින් එය භාවිතා කරන සියලුම කාර්යයන් සහ විචල්යයන් ගැන දැනගත යුතුය. මේ අනුව වර්ග නිර්වචන ඒ සියල්ලටම ක්රියාත්මක විය යුතුය. එසේ නොමැතිනම් සම්පාදක දෝෂ ඇතිවිය හැකිය. ඉහත පරිච්ඡේදයේ සඳහන් කර ඇති පරිදි, ඕනෑම ජාවාස්ක්රිප්ට් රාමුවක් .d.ts
සඳහා නිසැකවම ටයිප් කළ පැකේජ ස්ථාපනය කිරීමෙන් පහසුවෙන් ලබා ගත හැකි ලිපිගොනු ඇත.. කෙසේ වෙතත්, ඔබ ටයිප්ස්ක්රිප්ට් නිර්වචන නොමැති සමහර අපැහැදිලි පුස්තකාලයක් භාවිතා කර තිබීම හෝ ඔබ ජාවාස්ක්රිප්ට් ප්රාථමිකයන් කිහිපයක් පුරවා තිබීම විය හැකිය. එවැනි අවස්ථාවකදී, සම්පාදන දෝෂ අතුරුදහන් වීම සඳහා ඔබ මෙම බිටු සඳහා වර්ග අර්ථ දැක්වීම් සැපයිය යුතුය. .d.ts
ගොනුවක් සාදා එය tsconfig.json හි files
අරාවෙහි ඇතුළත් කරන්න, එවිට එය සැමවිටම ටයිප්ස්ක්රිප්ට් සම්පාදකයා විසින් සලකනු ලැබේ. එහි ටයිප්ස්ක්රිප්ට් වර්ගය ලෙස නොදන්නා බිටු ප්රකාශ කරයි any
. ඔබ සියලු දෝෂ ඉවත් කළ පසු ඔබේ අවශ්යතා අනුව ක්රමයෙන් එම කොටස් ටයිප් කිරීම හඳුන්වා දිය හැකිය.
ටයිප්ස්ක්රිප්ට් බිල්ඩ් නල මාර්ගයට ලබා ගැනීම සඳහා ඔබේ ගොඩනැගීමේ නල මාර්ගය වින්යාස කිරීමේ (නැවත) සමහර වැඩක් අවශ්ය වේ. සම්පාදනය පිළිබඳ පරිච්ඡේදයේ සඳහන් කර ඇති පරිදි එහි හොඳ සම්පත් ඕනෑ තරම් ඇති අතර ඔබ සමඟ වැඩ කිරීමට අවශ්ය මෙවලම් සංයෝජනය භාවිතා කරන බීජ ව්යාපෘති සොයා බැලීමට මම ඔබව දිරිමත් කරමි.
ලොකුම බාධකය වන්නේ ඉගෙනීමේ වක්රයයි. මුලදී කුඩා ව්යාපෘතියක් සමඟ සෙල්ලම් කිරීමට මම ඔබව දිරිමත් කරමි. එය ක්රියාත්මක වන ආකාරය, එය සාදන ආකාරය, එය භාවිතා කරන ගොනු, එය වින්යාසගත කර ඇති ආකාරය, එය ඔබගේ IDE තුළ ක්රියාත්මක වන ආකාරය, එය ව්යුහගත කර ඇති ආකාරය, එය භාවිතා කරන මෙවලම් ආදිය බලන්න. විශාල ජාවාස්ක්රිප්ට් කේත පදනමක් ටයිප්ස්ක්රිප්ට් බවට පරිවර්තනය කිරීම ඔබ දන්නා විට කළ හැකිය. ඔබ කරන්නේ කුමක්ද? පැය 72 කින් 600k පේළි යතුරු ලියනය බවට පරිවර්තනය කිරීම සඳහා මෙම බ්ලොගය කියවන්න ). ඔබ පැනීමට පෙර භාෂාව පිළිබඳ මනා අවබෝධයක් ඇති බවට වග බලා ගන්න.
ටයිප්ස්ක්රිප්ට් විවෘත මූලාශ්රයකි (අපාචේ 2 බලපත්රලත්, ගිට්හබ් බලන්න ) සහ මයික්රොසොෆ්ට් හි සහාය ඇත. සී # හි ප්රධාන ගෘහ නිර්මාණ ශිල්පී ඇන්ඩර්ස් හෙජ්ල්ස්බර්ග් මෙම ව්යාපෘතියේ මූලිකත්වය ගෙන කටයුතු කරයි. එය ඉතා ක්රියාකාරී ව්යාපෘතියකි; ටයිප්ස්ක්රිප්ට් කණ්ඩායම පසුගිය වසර කිහිපය තුළ නව විශේෂාංග රාශියක් නිකුත් කර ඇති අතර විශාල ඒවා තවමත් පැමිණීමට සැලසුම් කර ඇත ( මාර්ග සිතියම බලන්න ).
දරුකමට හදා ගැනීම සහ ජනප්රියත්වය පිළිබඳ කරුණු කිහිපයක්:
npm
(හෝ yarn
) පමණි install @types/foo
. ඔබේ පිළිතුර යාවත්කාලීන කළ හැකිද?
ටයිප්ස්ක්රිප්ට් CSS සඳහා අඩු හෝ සාස් කරන දේට සමාන දෙයක් කරයි. ඒවා එහි සුපිරි කට්ටල වන අතර එයින් අදහස් වන්නේ ඔබ ලියන සෑම JS කේතයක්ම වලංගු ටයිප්ස්ක්රිප්ට් කේත බවයි. ප්ලස් ඔබට එය භාෂාවට එකතු කරන වෙනත් හොඳ දේවල් භාවිතා කළ හැකි අතර සම්ප්රේෂණය කළ කේතය වලංගු js වේ. ඔබේ ප්රති code ල කේතය ක්රියාත්මක කිරීමට අවශ්ය JS අනුවාදය පවා ඔබට සැකසිය හැකිය.
වර්තමානයේ ටයිප්ස්ක්රිප්ට් යනු ES2015 හි සුපිරි කට්ටලයකි, එබැවින් නව js විශේෂාංග ඉගෙනීම ආරම්භ කිරීමට සහ ඔබේ ව්යාපෘතිය සඳහා අවශ්ය ප්රමිතියට සම්ප්රේෂණය කිරීමට හොඳ තේරීමක් විය හැකිය.
" ටයිප්ස්ක්රිප්ට් මූලධර්ම " - ඩෑන් වෝලින් සහ ජෝන් පැපා විසින් කරන ලද බහුවිධ වීඩියෝ පා course මාලාවක් ඇත්තෙන්ම හොඳයි, වර්තමානයේ (2016 මාර්තු 25) ටයිප්ස්ක්රිප්ට් 1.8 පිළිබිඹු කිරීම සඳහා යාවත්කාලීන කර ඇත.
මට නම් හොඳ ලක්ෂණ, ඉන්ටෙලිසෙන්ස් සඳහා ඇති හොඳ හැකියාවන් හැරුණු විට, පන්ති , අතුරුමුහුණත් , මොඩියුල , AMD ක්රියාත්මක කිරීමේ පහසුව සහ IE සමඟ ආයාචනා කරන විට විෂුවල් ස්ටුඩියෝ ටයිප්ස්ක්රිප්ට් නිදොස්කරණය භාවිතා කිරීමේ හැකියාව.
සාරාංශගත කිරීම සඳහා : ටයිප්ස්ක්රිප්ට් මඟින් ජාවාස්ක්රිප්ට් ක්රමලේඛනය වඩාත් විශ්වාසදායක සහ පහසු කළ හැකිය. පූර්ණ SDLC වලට වඩා ජාවාස්ක්රිප්ට් ක්රමලේඛකයාගේ tivity ලදායිතාව සැලකිය යුතු ලෙස වැඩි කළ හැකිය.
සියලුම බ්රව්සර සහාය සහ පෙර සැකසූ එක්මා ස්ක්රිප්ට් 5 (ඊඑස් 5). ES6 / ES2015 සහ ES / 2016 මේ වසරේ බොහෝ වෙනස්කම් ඇති කර ඇති අතර එමඟින් මෙම වෙනස්කම් උත්පතන කිරීම සඳහා ටයිප්ස්ක්රිප්ට් ගැන සැලකිලිමත් විය යුතු යමක් තිබේ.
S ටයිප්ස්ක්රිප්ට් යනු වර්ග -> ක්රම යනු එක් එක් දේපල හා ක්රමවේදයන්හි දත්ත සමුදාය නිර්වචනය කිරීමයි. ඔබ C # දන්නේ නම් යතුරු ලියනය තේරුම් ගැනීම පහසුය.
Type ටයිප්ස්ක්රිප්ට්හි විශාල වාසියක් වන්නේ අප අනන්යතාවය නිෂ්පාදනයට යාමට පෙර ගැටළු සම්බන්ධ කිරීමයි. කිසියම් ආකාරයක නොගැලපීමක් තිබේ නම් ඒකක පරීක්ෂණ අසමත් වීමට මෙය ඉඩ දෙයි.