ããã«ããããžã§ã¯ãã®äœæ¥ã®æåã«TypeScriptã§äœæãããå€ããã¢ïŒStradaãšåŒã°ããŠããŸããïŒãèŠã€ããŠãçŸåšTypeScriptã§äœæ¥ããŠãã人ãšäžç·ã«èŠèŽããŸããã
ä»æ¥ã¯ãTypeScriptã®å§ãŸãã«ã€ããŠã話ããããšæããŸãã
éå§ãã
2010幎ã®ç§ã«ãSteve Luccoãšç§ã¯æ°ãããããžã§ã¯ãã«åãçµã¿å§ããŸããã 圌ã®ç®æšã¯ãã¢ããªã±ãŒã·ã§ã³éçºããŒã ã倧éã®JavaScriptã³ãŒãã管çã§ããããã«ããããšã§ããã ã¹ãã£ãŒãã¯æ¬ç€Ÿã®è€æ°ã®ãã¯ãã«ã«ãã£ã¬ã¯ã¿ãŒãšè©±ãããŸããã 圌ãã¯ãéšéã®C ++ / CïŒããJavaScriptãžã®æ¥éãªç§»è¡ã«ã€ããŠè©±ããçŸåšãããã°ã©ã ãšå¯Ÿè©±ããããã®Webã¢ããªã±ãŒã·ã§ã³ããã³å¯Ÿå¿ããã¹ã¯ãªããã®éçºã«çå£ãªåªåã泚ãããŠããŸãã éçºããŒã ã«ã¯ãVisual Studioãªã©ã®å質ã®é«ãããŒã«ããC ++ããã³CïŒåã·ã¹ãã ãæäŸããæ©èœããããŸããã§ããã 圌ãã¯ãJavaScriptãžã®ç§»è¡ãä¿é²ããããã«ç§ãã¡ãã§ããããšãç¥ããããšæã£ãŠããŸãã ãã®åŸãåæ§ã®æ¹åã«åãã匷åãªITãã¬ã³ãã«æ³šç®ããŸããã
é«éãªJavaScriptãšã³ãžã³ãç»å ŽããHTML5ãéçºãããå°è±¡çãªWebã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºãšæ©èœãããã€ãç»å ŽããŸããã ãããã¯ãã¹ãŠãWebã§ã®JavaScriptã®äœ¿çšæ¹æ³ã®æ¥éãªå€åã瀺ããŠãããéå»æ°å¹Žã¯ããã§ã¯ãããŸããã§ããã
ãã®æãŸã§ã«ã¯ãåè¿°ã®åé¡ã解決ããããã®å€ãã®ãªãã·ã§ã³ããã§ã«ãããŸãããããããã®ã©ããç§ãã¡ã«é©ãããããªãåºãåžå Žãããã®æåŸ ã«å¿ããŸããã§ããã ãã€ã¯ããœããå ã§ã¯ãããã€ãã®å€§èŠæš¡ãªããŒã ãã¹ã¯ãªããïŒã䜿çšããŸãã ã ããã«ãããJavaScriptã®ä»£ããã«CïŒã䜿çšã§ããããã«ãªããŸããã ãã ããçµæãšããŠãå®éã«ããã°ã©ã ããç°å¢ããã¯é ãããŸããã ããã¯ããã€ãã®äžäŸ¿ãåŒãèµ·ãããŸããã ãŸãã Google Closure CompilerããããJSã³ãŒãå ã®ã³ã¡ã³ãã«åã蟌ãŸããè±å¯ãªã¿ã€ãã®ã·ã¹ãã ãæäŸããŸãããããã«ãããé«åºŠãªãããã¡ã€ããã»ã¹ãå¶åŸ¡ã§ããŸãïŒåæã«ãã¿ã€ãã«é¢é£ãããšã©ãŒã远跡ããŠå ±åã§ããŸãïŒã ãããŠæåŸã«ã CoffeeScriptã®å šçæããããŸããã CoffeeScriptã¯ãJSéçºã«ããããã©ã³ã¹ãã€ã©ãŒãžã®éãéãããåºã䜿çšãããæåã®JavaScriptèšèªã§ããã ã¡ãªã¿ã«ãç§ã¯æåã«æ¬¡ã®é¡æšã䜿çšããŠTypeScriptã®æ©èœã«ã€ããŠãã話ããŸããïŒã CoffeeScriptïŒTypeScript :: RubyïŒCïŒ/ Java / C ++ ãããã°ãã°æ¬¡ã®ããã«è¿œå ããŸãã Rubyã§æžã人:) ãã
ç§ãã¡ã¯ããã«ãäžèšã®3ã€ã®ãã¯ãããžãŒã®äº€å·®ç¹ã«äœçœ®ãããã®ãããããç¹ã§æ¢åã®ãã®ãããåªãããã®ãäœæããããšèããŸããã ç§ãã¡ã®èŠè§£ã§ã¯ãããã¯ã»ãã³ãã£ã¯ã¹ãšæ§æãå¯èœãªéãJavaScriptã«è¿ãèšèªã§ãããšæ³å®ãããŠããŸããã ãã®ãããªããããã£ã¯ãããããCoffeeScriptãšClosure CompilerãææããŠããŸããã ããã«ããã®èšèªãåãã§ãã¯ãšäŸ¿å©ãªããŒã«ããµããŒãããããšãã€ãŸãã¹ã¯ãªããïŒãæ倧éã«æŽ»çšããããšãæãã§ããŸããã
2010幎ã®ç§ãšå¬ã«ããã€ããŒãããžã§ã¯ããšããŠTypeScriptã®äœæ¥ãéå§ããŸããã ãªã©ãã¯ã¹ããªãããã«ãç§ãã¡ã®ä»äºã®çµæãä»ã®äººã«ç€ºãããããã«ãããæ°ãèµ·ããããããã«ãç§ãã¡ããã£ãããšã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã䌎ãå éšãã¬ãŒã³ããŒã·ã§ã³ãèšç»ããŸããã ããã¯ãMicrosoftã®ç 究ããã³ãœãããŠã§ã¢éçºããŒã ã®ããã°ã©ãã³ã°èšèªã¹ã¿ãããæåŸ ãããããäŒè°ã§ããããšã«ãªã£ãŠããŸãã ããããã€ãã³ãã®1ãæåã«ãã¹ãã£ãŒãïŒåœæããŒã ã§å¯äžã®ãšã³ãžãã¢ïŒãæéŠãè² å·ãããããæ£åžžã«ããã°ã©ãã³ã°ã§ããŸããã§ããã ãã®çµæãèšç»ãããããã©ãŒãã³ã¹ãåé¿ããããªãã®ã§ãå®éã«åäœããã³ã³ãã€ã©ããªããŠããç§ãã¡ãç®æããŠããããšãå®èšŒã§ãããã¹ãŠã®ãã®ãåéããããšã«ããŸããã ïŒããã«ãã¹ãã£ãŒãã¯æåã®çã®TypeScriptã³ã³ãã€ã©ãŒãäœæããŸãããããã«ãããæåã®å éšãŠãŒã¶ãŒïŒåŸã«VSã³ãŒãã«ãªã£ããã®ãäœæããããŒã ïŒãTypeScriptã䜿çšããŠå®éã®åé¡ã解決ã§ããããã«ãªããŸããïŒã
æåã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³
以äžã¯ã2011幎2æ1æ¥ã«å°èŠæš¡ããŒã 以å€ã®Stradaãã¢ã§äœ¿çšããäž»èŠãªã³ãŒãã§ãã
<!DOCTYPE html> <html> <meta http-equiv="X-UA-Compatible" content="IE=9"> <head> <title>JavascriptWebClient</title> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.js" type="text/javascript"></script> </head> <body> <h1>Employee Pay</h1> <h3><font color="#3AC1EF">âSalesEmployee's are paid: <span id='salesEmployeePay'></span></font></h3> <div id='results'></div> <script type='text/strada'> extern var $; class Employee(string name, double basepay) { public double calculatePay() { return basepay; } } class SalesEmployee(string name, double basepay, double salesbonus) : Employee(name, basepay) { public string getName() { return name; } public double calculatePay() { return base.calculatePay() + salesbonus; } } var employee = new Employee('Bob', 1000); var salesEmployee = new SalesEmployee('Jim', 800, 400); $('#salesEmployeePay').html(salesEmployee.calculatePay()); </script> <!-- Load the Strada compiler to processs text/strada tags --> <script src='StradaCompiler.js' type="text/javascript"></script> </body> </html>
æçµçã«TypeScriptãšåŒã°ããèšèªã«ãªã£ãèŠçŽ ãå€æ°ãããŸãã
- 泚éãå¿
èŠãšããã«è¡28ã30ã§åãé©çšããæé»çãªããã»ã¹ã
- ã¯ã©ã¹-ã¢ããªã±ãŒã·ã§ã³ã¡ã«ããºã ãšå€æ°ã®ã¿ã€ãã®å®è£
ãèšè¿°ããæ¹æ³ãšããŠã ã¯ã©ã¹ã¯åçŽãªJavaScriptã§ã¯äŸ¿å©ã§ãããTypeScriptã§ã¯ããéèŠãªåœ¹å²ãæãããå®è£
ãšåã®äž¡æ¹ãäžåºŠã«èšè¿°ã§ããäºéã®äœæ¥ãè¡ãå¿
èŠããããŸããã
-
extern
ããŒã¯ãŒããã¿ã€ãæ å ±ãæäŸãããŠããªãïŒãŸãã¯ãŸã æäŸãããŠããªãïŒå Žåã§ããéåžžã®JSã³ãŒãããã³ã©ã€ãã©ãªãšééçã«å¯Ÿè©±ã§ããŸãã
ãã ããããã§ã¯ãæçµçã«TypeScriptããåé€ãããã®ãèŠãããšãã§ããŸãã
- ã¯ã©ã¹æ§æ ããã«ç€ºãããŠããããããæ©èœçãªãã¯ã©ã¹æ§æã䜿çšãããã£ãã®ã§ãã ç§ã¯ãå°ãåã«ãã¯ã©ã¹ã«åæ§ã®ç°¡æœãªæ§æã䜿çšããFïŒã«åãçµã¿ãŸããã ããã«ãCïŒã®åæ§ã®æ§æã«ã€ããŠã説æããŸããã ãã®æ§æã¯ãECMAScriptã§æšæºåãããã¯ã©ã¹ã®ãããã¿ã€ãã«åºã¥ãã¢ãããŒãã§èŠãããããã«ããªããžã§ã¯ãããããã£ã®ä»£ããã«ãåœæ人æ°ããã£ãJavaScriptã®ãã¯ã©ã¹ãã§ç¶æ
ãè¡šãããã«ã¯ããŒãžã£ãŒã䜿çšããã¹ã¿ã€ã«ã«é©ããŠããããšã«æ³šæããŠãã ããã ãã®ãããã¯ã¯ãTypeScriptã®ãªãªãŒã¹ãŸã§ã»ãšãã©è°è«ã®äœå°ããããŸããã
ECMAScriptã®ã¯ã©ã¹ã§çºçããããšã¯å¥ã®æ¹åã«é²ã¿ãTypeScriptãå°æ¥ã®æšæºã«è¿ã¥ããããšèããŸããããæšæºã®æ§æäœã®äžã«TypeScriptã¯ã©ã¹ãèšè¿°ããªããã°ãªããªããšããäºå®ã¯å«ãã§ããïŒéåžžã®ç¶æ³ã§ã¯ãååã®4åã®ç¹°ãè¿ãã«ãªããŸãå€æ°ïŒã ãã®çµæãæšæºãžã®æºæ ã匷調ããŸããã ããã¯å±éºã§ããã äºå®ã¯ãES6ãã©ã®ãããªéåœãåŸ ã£ãŠããã®ããå®å šã«ã¯æããã§ã¯ãªãã£ããšããããšã§ãã ES4ã®ããã«ã圌ã¯åºãŠããªãã£ãã ããã ããããç§ãã¡ã«ãšã£ãŠæãéèŠãªããšã¯ãJavaScriptã®äžã§æã軜éãªæœè±¡åã§ãããšæ³å®ãããŠããTypeScriptã®äž»èŠãªç®æšã«åŸãããšã§ããã ã
- ãã¬ãã£ãã¯ã¹ãšããŠã¿ã€ããæå®ããŸãã äžèšã®ã³ãŒãã§ã¯ã
string name
代ããã«string name
ãããªãã®ãèŠãããšãã§ããŸãname: string
string-çŸä»£ã®TypeScriptã§äœ¿çšãããã¬ã³ãŒãã çŸåšany
ãšåŒã°ããŠããåã«var
ããŒã¯ãŒãã䜿çšãããããæåã¯ãã®æ§æã«åŸåããŠããŸããã ããã«ãããvar x = âŠ
ãããªåŒã§æ瀺çã«any
åã«æé»çã«ãã£ã¹ãã§ããŸãã ããã«ãããã¯ãæé»çãªvar
åãããã«çŸãããšãã«CïŒã§æè¿è¡ããããã®ã«äŒŒãŠããŸããã ãããããã®äœçœ®ã«åæ å ±ãé 眮ããããã®èšèªã®ææ³ã¯ã解æã«å€ãã®åé¡ããããããŸãã ããã«ããã®åéã§ã¯ãJavaScriptãªã©ã®èšèªã§ãã©ãŒãããname: string
ã䜿çšãã貎éãªå äŸããããŸããname: string
ïŒãŸããActionScriptã§ãããECMAScript4ã§åºãŠããŸããã§ããïŒã ãã®çµæãããã§äœ¿çšãããŠããã¢ãããŒããéåžžã«æ©ãå€æŽããŸããã æåã®ãã¬ãŒã³ããŒã·ã§ã³ãã2ãæåŸã«è¡ã£ãã³ãŒããµã³ãã«ã§ã¯ãââã³ãã³æ§æãæ¢ã«äœ¿çšãããŠããŸãã
- ã¹ãŒããŒã¯ã©ã¹ã
class Foo : Bar
ãã¶ã€ã³ã®class Foo : Bar
CïŒã¹ã¿ã€ã«ã®ã¹ãŒããŒã¯ã©ã¹ã®class Foo : Bar
ãŸããã ãã®åŸãextends
䜿çšã«åãæ¿ããŸããã
- ã¹ã¯ãªãããã³ã³ãã€ã«ããã¢ãããŒãã ããã«ãã1ã€å°ããªãã®ããããŸãã ã³ãŒãã¯
<script type="text/strada">
ãããã¯ã«ãããã³ã¡ã³ãã«ã¯StradaCompiler.js
ã "on the fly"ãšåŒã°ããtext/strada
ãããã¯ã®ã³ã³ãã€ã«ãæ åœããŠããããšã«StradaCompiler.js
ãŠStradaCompiler.js
ã 次ã«ããããžã§ã¯ãã®ã¢ã»ã³ããªã®ç¬ç«ããã¹ããŒãžã䜿çšãã代ããã«ã<script>
ã¿ã°ã䜿çšããŠTypeScriptãHTMLã«çŽæ¥é 眮ãããã®çµã¿èŸŒã¿ã³ãŒããããŒãžã®èªã¿èŸŒã¿æã«è»¢çœ®ïŒããã³ãã§ããã°ãã£ãã·ã¥ïŒãããããšãæ³åããŸããã åœæããã®ã¢ãããŒãã¯CoffeeScriptã®å°èŠæš¡ãããžã§ã¯ãã§äžè¬çã§ããããããªã倧ããªéçºããŒã ãšè°è«ããçµæãã»ãšãã©ã®å Žåã§ã¯ãªããšããå€ãã®å®éã®ç¶æ³ã§ãããéå®çšçã§ããããšãããããŸããã å®éã«ã¯ããã®ãããªåé¡ã¯ãWebPackãªã©ã®ããŒã«ã䜿çšããŠæçµçã«è§£æ±ºãããŸãããWebPackã¯ãã³ãŒããåçã«åã³ã³ãã€ã«ããŸããããã³ã³ãã€ã«ããã圢åŒã§ãã©ãŠã¶ã«è¡šç€ºããŸããã
ç§ã¯ããããã¹ãŠè±ã§ãããšèšããªããã°ãªããŸããã ããã«èå³æ·±ãã®ã¯ããã®ã³ãŒããã©ã®ããã«æ©èœããããã§ãã
ã©ã®ããã«æ©èœããŸããã
ãã®åŸãFïŒã§JavaScriptã€ã³ã¿ãŒããªã¿ãŒãäœæããããã®å°ããª2次ãããžã§ã¯ãããããŸããïŒFïŒã§ã®äœæ¥ããJavaScriptã§ã®äœæ¥ã«åãæ¿ããæ段ã®ãããªãã®ã§ãïŒã ãã®ãããžã§ã¯ãã®äžéšã¯ãããªãå®å®ããJavaScriptïŒES5ïŒããŒãµãŒã§ããã Stradaã«è¿œå ããæ°ããã³ã³ã¹ãã©ã¯ãããµããŒãããããã«ãããã€ãã®ææ³ãå€æŽããŸããïŒé©ãã»ã©å°æ°ãå¿ èŠã§ããïŒã åºæ¬çã«ã¯æ¬¡ã®ããã«ãªããŸããã
@@ -459,8 +466,12 @@ StatementList: | Statement { [$1]} // See 12.2 VariableStatement: - | VAR VariableDeclarationList SEMICOLON { VariableStatement(List.rev($2)) } - | VAR VariableDeclarationList { VariableStatement(List.rev($2)) } + | Type VariableDeclarationList SEMICOLON { VariableStatement([], false, $1,List.rev($2)) } + | Type VariableDeclarationList { VariableStatement([], false, $1, List.rev($2)) } + | READONLY Type VariableDeclarationList SEMICOLON { VariableStatement([], true, $2,List.rev($3)) } + | READONLY Type VariableDeclarationList { VariableStatement([], true, $2, List.rev($3)) } // See 12.2 VariableDeclarationList: | VariableDeclaration { [$1]}
ã¡ãªã¿ã«ããã®åæããŒãžã§ã³ã§ã¯
readonly
ã ã£ãããã§ãã
çµæã®ASTãéåžžã®JavaScriptãšããŠåºåããæ¹æ³ãèŠã€ããŸããããåãç Žæ£ãã代ããã«ãã¯ããŒãžã£ãŒã³ã³ãã€ã©ã«ãã£ãŠããããã³ã¡ã³ãã«å€æããŸããã ãã®çµæããã¶ã€ã³ã¯ç¹ã«å®å®ããŠããªãããšãå€æããŸãããããã¢ãéå§ããã«ã¯ããã§ååã§ããïŒ
ãã®åŸãããã¯éåžžã«è«ççã§ãããåãã§ãã¯ããŒã«ã®åœ¢åŒã§çµæã®ã³ãŒããã¯ããŒãžã£ã³ã³ãã€ã©ãšåŒã³ãŸããã Closure Compilerã¯AppEngineã«äŸ¿å©ãªãµãŒãã¹ãããïŒ ãŸã ãããŸã ïŒããã®çµæãã³ãŒããPOSTãªã¯ãšã¹ããšããŠãã®ãµãŒãã¹ã«éä¿¡ãããšã©ãŒã«é¢ããæ å ±ãåãåããŸããã
åœæãSilverlightïŒããã³FlashïŒã¯ãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«ãããŠäŸç¶ãšããŠéèŠãªåœ¹å²ãæãããŠããŸããã ãã®ãããããŒãµãŒïŒFïŒã§èšè¿°ïŒãéå§ããããã«ã
text/strada
ã¹ã¯ãªãããæ€åºãããããã解æããã¯ããŒãžã£ãŒãéä¿¡ãããšã©ãŒãå ±åããSilverlightã¢ããªã±ãŒã·ã§ã³ãšããŠããŒãžã«é 眮ããŸããã
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.ServiceModel.Activation; using System.Net; using System.IO; using System.Web; namespace JavascriptWebClient.Web { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "ClosureCompile" in code, svc and config file together. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(IncludeExceptionDetailInFaults=true)] public class ClosureCompile : IClosureCompile { public string DoWork(string srcText) { System.Diagnostics.Debug.WriteLine("Hello!"); var request = WebRequest.Create("http://closure-compiler.appspot.com/compile"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; var stream = request.GetRequestStream(); // Send the post variables StreamWriter writer = new StreamWriter(stream); writer.Write("output_format=xml"); writer.Write("&output_info=compiled_code"); writer.Write("&output_info=warnings"); writer.Write("&output_info=errors"); writer.Write("&output_info=statistics"); writer.Write("&compilation_level=ADVANCED_OPTIMIZATIONS"); writer.Write("&warning_level=verbose"); writer.Write("&js_code=" + HttpUtility.UrlEncode(srcText)); writer.Flush(); writer.Close(); var response = request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); // get the result text string result = reader.ReadToEnd(); return result; } } }
ãã®ã³ãŒãã¯ããã€ã®æãåºãåŒã³èµ·ãããŸãã...
ãã®çµæãéçºè ããŒã«ã®ããŒã«ã䜿çšããŠ
<script>
å 容ãå€æŽããéã®ãšã©ãŒã«é¢ããã€ã³ã¿ã©ã¯ãã£ããªæ å ±ãåãåãããšãã§ããããã¯ã°ã©ãŠã³ãã¿ã€ããã§ãã¯ã·ã¹ãã ãããã§æ©èœãããšããå°è±¡ãäžããŸããã ããã«ãããéæãããäž»èŠãªæ©èœã®ããã€ããå®èšŒããããšãã§ããŸããã 確ãã«ããã®ãã¹ãŠãã©ã®ããã«è¡ããããã¯ãå°ãªããšã1人ã®æ¬ç©ã®ããã°ã©ãããããžã§ã¯ãã«åãçµãã®ã«é©ããŠããŸããã§ããã
次ã«ãå¥ã®ã³ãŒãã瀺ããŸããã ããã§ã¯ãçµæãšããŠTypeScriptã«ãªã£ããã®ãšã¯ããã«èå³æ·±ãéããããã€ãèŠãããšãã§ããŸãã ããšãã°ã
number
代ããã«
double
åïŒ
int
è¿œå ããããšãèããŸããããããã«ããJavaScriptã®ã»ãã³ãã£ã¯ã¹ããé ããããŸããïŒãCïŒã§æ £ç¿çãªã€ã³ã¿ãŒãã§ã€ã¹ã®
I
ãã¬ãã£ãã¯ã¹ã ã€ã³ã¿ãŒãã§ã€ã¹ããåæå®ãããŠããªããªããžã§ã¯ããšå³å¯ã«åæå®ãããã¯ã©ã¹ã®èŠçŽ ã®æ€çŽ¢ãèªç±ã«æ··åšãããæ©èœãªã©ãæ®ã£ãŠãããã®ãããã€ããããŸãã
interface IHashtable { double lookup(string i); void set(string i, double d); } class Hashtable() { var o = {}; public double lookup(string i) { return this.o[i]; } public void set(string i, double d) { this.o[i] = d; } } interface IExpression { double evaluate(IHashtable vars); } class Constant(double value) : IExpression { public double evaluate(IHashtable vars) { return value; } } class VariableReference(string name) : IExpression { public double evaluate(IHashtable vars) { var value = vars.lookup(name); return value; } } class Operation(IExpression left, string op, IExpression right) : IExpression { public double evaluate(IHashtable vars) { double x = this.left.evaluate(vars); double y = this.right.evaluate(vars); switch (this.op) { case '+': return x + y; case '-': return x - y; case '*': return x * y; case '/': return x / y; } } } IExpression e = new Operation(new VariableReference("x"),'+',new Constant(3)); function f() { IExpression e = new Operation( new VariableReference("x"), '*', new Operation( new VariableReference("y"), '+', new Constant(2) )); IHashtable vars = new Hashtable(); vars.set("x", 3); vars.set("y", 5); e.evaluate(vars); // Outputs "21" vars.set("x", 1.5); vars.set("y", 9); return e.evaluate(vars); // Outputs "16.5" } f();
ãŸãšã
æåã®ãã¢ããçŽ1幎ååŸã TypeScriptããªãªãŒã¹ããŸãã ã ãããŠã5幎åŸãTypeScriptã¯ãœãããŠã§ã¢éçºæ¥çã§æãæ¥éã«æé·ããŠããããã°ã©ãã³ã°èšèªã®1ã€ã«ãªããŸããã
ããŠããããå€éšã®ãªãã¶ãŒããŒãšããŠèŠããšãTypeScriptããŒã ãèšèªã®æåã®ã¢ã€ãã¢ãåºå®ããäžè²«æ§ãè³è³ããããåŸãŸããã éèŠãªã®ã¯ãTypeScriptã¯JavaScriptã®åãªã軜éãªæœè±¡åã§ãããšããããšã§ãã ãŸããå ã æå®ãããŠããåããã¬ãŒã ã¯ãŒã¯ãä¿æãããŸãŸãèšèªãã©ã®ããã«çºå±ããããšãã楜ããå°è±¡ãäœãåºããŸãã ã€ãŸãããã®ç®çã¯ãã»ãšãã©ãã¹ãŠã®JavaScriptãããžã§ã¯ãã§çç£çã«äœ¿çšã§ããåã·ã¹ãã ãæäŸããããšã§ãã TypeScriptã¯ãJSãšã³ã·ã¹ãã ã«ãããæ°ãããã¬ãŒã ã¯ãŒã¯ãšéçºã¹ã¿ã€ã«ã®åºçŸã«ããããã®çæ³ã«å¿ å®ã§ããç¶ããŠããŸãã
TypeScriptã®èšå¿µæ¥ã«ããã§ãšãããããŸãã éçºããŒã ãšTSã³ãã¥ããã£ã«æè¬ããŸããã©ã®TypeScriptããã°ãããä»äºãããŠãããã«æè¬ããŸãã
芪æãªãèªè ïŒ TypeScriptã䜿çšããŠããŸããïŒ