æ®å¿µãªããã2021幎ã«ã¯ã人æ°ãšããŸããŸãªãŠãŒãã£ãªãã£ïŒããã³ã©ã€ãã©ãªïŒããã®ãµããŒãã®äž¡æ¹ã§ããããŒãTypeScriptãããå€§å¹ ã«å£ã£ãŠããããšãèªããªããã°ãªããŸãã
JavaScriptã§åå®å šæ§ãå¿ èŠãªã®ã¯ãªãã§ããïŒ
JavaScriptã¯çŽ æŽãããèšèªã§ããããããããã¯å¥œãã§ã¯ãããŸããã JavaScriptãäžå¿ã«æ§ç¯ããããšã³ã·ã¹ãã ã¯çŽ æŽãããã§ãã 2021幎ã圌女ã¯èšèªã®ææ°æ©èœã䜿çšã§ãããšããäºå®ãæ¬åœã«è³è³ãããã«ãã·ã¹ãã ã®1ã€ã®èšå®ã倿Žããããšã§ãIE8ãå«ãå€ãããŒãžã§ã³ã®ãã©ãŠã¶ãŒã§ã®å®è¡ããµããŒãããããã«å®è¡å¯èœãã¡ã€ã«ããã©ã³ã¹ãã€ã«ããŸãã ãå€ã¯èŠããŠããŸããã ãHTMLã§æžããïŒJSXãæå³ããïŒããšãã§ãããŠãŒãã£ãªãã£
babel
ïŒãŸãã¯
tsc
ïŒã䜿çšããŠã ãã¹ãŠã®ã¿ã°ããReactã©ã€ãã©ãªïŒãŸãã¯ä»ã®ããã ãå¥ã®æçš¿ã§è©³ãã説æããŸãïŒãåŒã³åºããªã©ã®æ£ããJavaScriptæ§é ã«çœ®ãæããŸãã
JavaScriptããã©ãŠã¶ã§å®è¡ãããã¹ã¯ãªããèšèªãšããŠåªããŠããã®ã¯ãªãã§ããïŒ
- JavaScriptããã³ã³ãã€ã«ãããå¿ èŠã¯ãããŸããã JavaScriptæ§é ã远å ããã ãã§ããã©ãŠã¶ãŒã¯ããããçè§£ããå¿ èŠããããŸããããã¯ããã«äŸ¿å©ã§ã»ãšãã©ç¡æã®ãã®ãããããäžããŸããããšãã°ããã©ãŠã¶ã§çŽæ¥ãããã°ããããšã¯ãããã°ã©ããŒïŒããšãã°ãã³ã³ãã€ã©ãŒã®ãããã°ãªãã·ã§ã³ãšå¯Ÿå¿ããã©ã€ãã©ãªã®æãå«ããããšãå¿ããŠã¯ãªããŸããïŒã®è²¬ä»»ã§ã¯ãªãããã©ãŠã¶ãŒã®éçºè ã®è²¬ä»»ã§ãã 10kè¡ã®ãããžã§ã¯ããã³ã³ãã€ã«ãããŠããéã10ã30åïŒC / C ++ã®å Žåã¯ãªã¢ã«ã¿ã€ã ïŒåŸ ã€å¿ èŠã¯ãããŸãããè¡ã倿Žãããã©ãŠã¶ããŒãžããªããŒãããŠãã³ãŒãã®æ°ããåäœã芳å¯ããã ãã§ãããŸããããšãã°webpackã䜿çšããŠããå Žåã¯ãããŒãžãåèªã¿èŸŒã¿ãããŸããå€ãã®ãã©ãŠã¶ã§ã¯ãdevtoolsã䜿çšããŠããŒãžå ã§ã³ãŒãã倿Žã§ããŸãã
- - . 2021 . Chrome/Firefox, , , 5% (enterprise-) 30% (UI/) , .
- JavaScript , . â ( worker'). , 100% CPU ( UI ), , , Promise/async/await/etc.
- åæã«ããªãJavaScriptãéèŠãªã®ããšãã質åããèããŠããŸãããçµå±ã®ãšãããJSã®å©ããåããŠã次ã®ããšãã§ããŸãïŒãã©ãŒã ãæ€èšŒããããŒãžã³ã³ãã³ããå®å šã«ãªããŒãããã«æŽæ°ããéæšæºã®åäœå¹æã远å ãããªãŒãã£ãªãšãããªãæäœãããšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã€ã¢ã³ãå šäœãJavaScriptã
ã»ãšãã©ãã¹ãŠã®ã¹ã¯ãªããïŒã€ã³ã¿ããªã¿ïŒèšèªãšåæ§ã«ãJavaScriptã§ã¯...å£ããã³ãŒããæžãããšãã§ããŸãããã©ãŠã¶ããã®ã³ãŒãã«å°éããªãå Žåããšã©ãŒã¡ãã»ãŒãžãèŠåããŸãã¯äœã衚瀺ãããŸãããäžæ¹ã§ã¯ãããã¯è¯ãããšã§ããå€§èŠæš¡ã§å€§èŠæš¡ãªWebãµã€ããããå Žåããã¿ã³ã¯ãªãã¯ãã³ãã©ãŒã®ã³ãŒãã«æ§æãšã©ãŒããã£ãŠãããŠãŒã¶ãŒããµã€ããå®å šã«ããŒãããªãããšã¯ãããŸããã
ãããããã¡ãããããã¯æªãããšã§ãããµã€ãã®ã©ããã§äœããæ©èœããŠããªããšããäºå®èªäœãæªãããã§ãããããŠãã³ãŒããåäœãããµã€ãã«å°éããåã«ããµã€ãäžã®ãã¹ãŠã®ã¹ã¯ãªããããã§ãã¯ããŠãå°ãªããšãã³ã³ãã€ã«ãããŠããããšã確èªããã®ã¯çŽ æŽãããããšã§ãããããŠçæ³çã«ã¯-ãããŠåãããã®ããã«ãããŸããŸãªãŠãŒãã£ãªãã£ã®ã»ããã䜿çšãããŸãïŒç§ã®ãæ°ã«å ¥ãã®ã»ããã¯ãnpm + webpack + babel / tsc + karma + jsdom + mocha + chaiã§ãïŒã
ç§ãã¡ãçæ³çãªäžçã«äœãã§ããå Žåããµã€ãäžã®ãã¹ãŠã®ã¹ã¯ãªããã¯ã1è¡ã®ã¹ã¯ãªããã§ãã£ãŠãããã¹ãã§ã«ããŒãããŸããããããæ®å¿µãªãããäžçã¯çæ³çã§ã¯ãªãããã¹ãã§ã«ããŒãããŠããªãã³ãŒãã®ãã¹ãŠã®éšåã«ã€ããŠãç§ãã¡ã¯ããçš®ã®èªååãããæ€èšŒããŒã«ã«ããé Œãããšãã§ããŸããã確èªã§ãããã®ïŒ
- JavaScript. , JavaScript, , , . /// .
- . , , . , :
var x = null; x.foo();
. â null .
ã»ãã³ãã£ã¯ã¹ãšã©ãŒã«å ããŠãããã«ã²ã©ããšã©ãŒãã€ãŸãè«çãšã©ãŒãçºçããå¯èœæ§ããããŸããããã°ã©ã ããšã©ãŒãªãã§å®è¡ãããããçµæããŸã£ããæåŸ ããããã®ã§ã¯ãªãå Žåãæååãšæ°åã远å ãããã¯ã©ã·ãã¯ïŒ
console.log( input.value ) // 1
console.log( input.value + 1 ) // 11
æ¢åã®éçã³ãŒãåæããŒã«ïŒeslintãªã©ïŒã¯ãããã°ã©ããŒãã³ãŒãã§è¡ãæœåšçãªãšã©ãŒã®ããªãã®æ°ã远跡ããããšããå¯èœæ§ããããŸããäŸãã°ïŒ
- 誀ã£ãã«ãŒãçµäºæ¡ä»¶ã§ç¡éforã«ãŒããçŠæ¢ãã
- Promiseã³ã³ã¹ãã©ã¯ã¿ãŒãžã®åŒæ°ãšããŠã®éåæé¢æ°ã®çŠæ¢
- æ¡ä»¶ã§ã®å²ãåœãŠã®çŠæ¢
- ãããŠä»ã®äºº
ãããã®ã«ãŒã«ã¯ãã¹ãŠãæ¬è³ªçã«ãªã³ã¿ãŒãããã°ã©ããŒã«èª²ãå¶çŽã§ããããšã«æ³šæããŠãã ãããã€ãŸãããªã³ã¿ãŒã¯å®é ã«ã¯JavaScriptèšèªã®æ©èœãäœäžããããããããã°ã©ããŒã¯æœåšçãªãã¹ãæžããããšãã§ããŸãã all-allã«ãŒã«ãæå¹ã«ãããšãæ¡ä»¶ã§å²ãåœãŠãè¡ãããšã¯äžå¯èœã«ãªãïŒJavaScriptã¯æåã¯ãããèš±å¯ããŸããïŒããªããžã§ã¯ããªãã©ã«ã§éè€ããŒã䜿çšããåŒã³åºãããšããã§ããŸãã
console.log()
ã
倿°ã®åã®è¿œå ãšåŒã³åºãã®åãã§ãã¯ã¯ãæœåšçãªãšã©ãŒãæžããããã®JavaScriptèšèªã®è¿œå ã®å¶éã§ãã
æ°å€ã«æååãæããããšããŠããŸã
ãªããžã§ã¯ãã®ååšããªãïŒåã«èšè¿°ãããŠããªãïŒããããã£ã«ã¢ã¯ã»ã¹ããããšããŸããã
åŒæ°ã®åãäžèŽããªã颿°ãåŒã³åºãããšããŸããã
åãã§ãã«ãŒãªãã§ãã®ã³ãŒããèšè¿°ãã å Žåãã³ãŒãã¯æ£åžžã«ãã©ã³ã¹ãã€ã«ãããŸãããªããžã§ã¯ãã®ã¿ã€ãã«é¢ããæ å ±ãïŒæç€ºçãŸãã¯æé»çã«ïŒäœ¿çšããªãå Žåãéçã³ãŒãåæã®ææ®µã¯ãããã®ãšã©ãŒãèŠã€ããããšãã§ããŸããã
ã€ãŸããJavaScriptã«å ¥åã远å ãããšãããã°ã©ããŒãäœæããã³ãŒãã«è¿œå ã®å¶éã远å ãããŸãããã¹ã¯ãªããã®å®è¡äžã«ïŒã€ãŸãããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§ïŒçºçããå¯èœæ§ã®ãããšã©ãŒãèŠã€ããããšãã§ããŸãã
JavaScriptã¿ã€ãã³ã°æ©èœ
| ãã㌠| TypeScript | |
|---|---|---|
| 倿°ã®åãåŒæ°ããŸãã¯é¢æ°ã®æ»ãåãèšå®ããæ©èœ | |
|
| ãªããžã§ã¯ãã¿ã€ãïŒã€ã³ã¿ãŒãã§ã€ã¹ïŒãèšè¿°ããæ©èœ | |
|
| ã¿ã€ãã®å€ãå¶éãã | |
|
| åæçšã®åå¥ã®ã¿ã€ãã¬ãã«ã®æ¡åŒµ |
|
|
| ã远å ãã¿ã€ã |
|
|
| è€éãªã±ãŒã¹ã®è¿œå ã®ãã¿ã€ãã |
|
|
JavaScriptã¿ã€ãããµããŒãããããã®äž¡æ¹ã®ãšã³ãžã³ã¯ãã»ãŒåãæ©èœãåããŠããŸãããã ãã匷ãåã®èšèªã䜿çšããŠããå Žåãåä»ãã®JavaScriptã§ãJavaãšã¯éåžžã«éèŠãªéãããããŸãããã¹ãŠã®åã¯åºæ¬çã«ã€ã³ã¿ãŒãã§ã€ã¹ãã€ãŸãããããã£ã®ãªã¹ãïŒããã³ãã®åãåŒæ°ïŒãèšè¿°ããŸãããŸãã2ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ãåãïŒãŸãã¯äºææ§ã®ããïŒããããã£ãèšè¿°ããŠããå Žåã¯ãããããäºãã«ä»£ããã«äœ¿çšã§ããŸããã€ãŸããæ¬¡ã®ã³ãŒãã¯åä»ãJavaScriptã§ã¯æ£ããã§ãããJavaãC ++ã§ã¯æããã«æ£ãããããŸããã
type MyTypeA = { foo: string; bar: number; } type MyTypeB = { foo: string; } function myFunction( arg : MyTypeB ) : string { return `Hello, ${arg.foo}!`; } const myVar : MyTypeA = { foo: "World", bar: 42 } as MyTypeA; console.log( myFunction( myVar ) ); // "Hello, World!"
MyTypeBã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯
foo
åã æã€ããããã£ãå¿ èŠ
string
ã§ãããMyTypeAã€ã³ã¿ãŒãã§ã€ã¹ãæã€å€æ°ã«ã¯å¿ èŠãªã®ã§ããã®ã³ãŒãã¯åä»ãJavaScriptã®èгç¹ããã¯æ£ãã ã§ãã
ãã®ã³ãŒãã¯ã倿°ã®ãªãã©ã«ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãå°ãçãæžãçŽãããšãã§ã ãŸã
myVar
ã
type MyTypeB = { foo: string; } function myFunction( arg : MyTypeB ) : string { return `Hello, ${arg.foo}!`; } const myVar = { foo: "World", bar: 42 }; console.log( myFunction( myVar ) ); // "Hello, World!"
myVar
ãã®äŸã®å€æ°ã¿ã€ã ã¯ãªãã©ã«ã€ã³ã¿ãŒãã§ã€ã¹
{ foo: string, bar: number }
ã§ããããã§ã
arg
颿°ã® åŒæ°ã®æåŸ ãããã€ã³ã¿ãŒãã§ãŒã¹ãšäºææ§ããã
myFunction
ã®ã§ããã®ã³ãŒãã¯ãããšãã°TypeScriptã®èгç¹ãããšã©ãŒããããŸãã ã
ãã®åäœã«ãããããŸããŸãªã©ã€ãã©ãªãã«ã¹ã¿ã ã³ãŒããæäœãããšããããã«ã¯é¢æ°ãåŒã³åºããšãã®åé¡ã®æ°ãå€§å¹ ã«æžå°ããŸããå žåçãªäŸã¯ãããã€ãã®ã©ã€ãã©ãªãæå¹ãªãªãã·ã§ã³ãå®çŸ©ãããããããªãã·ã§ã³ãªããžã§ã¯ããšããŠæž¡ãå Žåã§ãã
// - interface OptionsType { optionA?: string; optionB?: number; } export function libFunction( arg: number, options = {} as OptionsType) { /*...*/ }
// import {libFunction} from "lib"; libFunction( 42, { optionA: "someValue" } );
ã¿ã€ãã¯
OptionsType
ã©ã€ãã©ãªãããšã¯ã¹ããŒããããªãããšã«æ³šæããŠãã ãã ïŒã«ã¹ã¿ã ã³ãŒãã«ã€ã³ããŒããããããšããããŸããïŒããã ããããã«ããã
options
颿°ã®2çªç®ã®åŒæ°ãããã³åæå®ã·ã¹ãã ã«ãªãã©ã«ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠé¢æ°ãåŒã³åºãã ãã®åŒæ°ã®åã®äºææ§ã確èªããããšãã§ããŸããJavaã§ãã®ãããªããšãããããšãããšãã³ã³ãã€ã©éã§æããã«æ··ä¹±ãçããŸãã
ãã©ãŠã¶ã®èгç¹ããã¯ã©ã®ããã«æ©èœããŸããïŒ
Microsoftã®TypeScriptãFacebookã®ãããŒããã©ãŠã¶ã§ãµããŒããããŠããŸããããŸããææ°ã®JavaScriptèšèªæ¡åŒµæ©èœã¯ãäžéšã®ãã©ãŠã¶ãŒã§ãŸã ãµããŒããããŠããŸãããã§ã¯ããã®ã³ãŒãã¯ããŸããæ£ç¢ºæ§ãã©ã®ããã«ãã§ãã¯ããæ¬¡ã«ããã©ãŠã¶ãŒã«ãã£ãŠã©ã®ããã«å®è¡ãããã®ã§ããããã
çãã¯traspilingã§ãããã¹ãŠã®ãéæšæºãJavaScriptã³ãŒãã¯ããéæšæºãïŒãã©ãŠã¶ãŒã«ã¯äžæïŒã³ãŒãããã©ãŠã¶ãŒãçè§£ã§ããäžé£ã®åœä»€ã«å€æããäžé£ã®ãŠãŒãã£ãªãã£ãééããŸãããããŠãã¿ã€ãã³ã°ã®å Žåãã倿ãå šäœã¯ããã¹ãŠã®åã®æ¹è¯ããã¹ãŠã®ã€ã³ã¿ãŒãã§ãŒã¹èšè¿°ãã³ãŒãããã®ãã¹ãŠã®å¶éãåã«åé€ããããšããäºå®ã«ãããŸããããšãã°ãäžèšã®äŸã®ã³ãŒãã¯...ã«ãªããŸãã
/* : type MyTypeA = { foo: string; bar: number; } */ /* : type MyTypeB = { foo: string; } */ function myFunction( arg /* : : MyTypeB */ ) /* : : string */ { return `Hello, ${arg.foo}!`; } const myVar /* : : MyTypeA */ = { foo: "World", bar: 42 } /* : as MyTypeA */; console.log( myFunction( myVar ) ); // "Hello, World!"
ãããã
function myFunction( arg ) { return `Hello, ${arg.foo}!`; } const myVar = { foo: "World", bar: 42 }; console.log( myFunction( myVar ) ); // "Hello, World!"
ãã®å€æã¯éåžžãæ¬¡ã®ããããã®æ¹æ³ã§è¡ãããŸãã
- ãããŒããã¿ã€ãæ å ±ãåé€ããã«ã¯ãbabelãã©ã°ã€ã³ã䜿çšããŸãïŒ@ babel / plugin-transform-flow-strip-types
- 2ã€ã®ãœãªã¥ãŒã·ã§ã³ã®ããããã䜿çšããŠTypeScriptãæäœã§ããŸãããŸããbabelãš@ babel / plugin-transform-typescriptãã©ã°ã€ã³ã䜿çšã§ããŸã
- 次ã«ãbabelã®ä»£ããã«ãtscãšåŒã°ããMicrosoftç¬èªã®ãã©ã³ã¹ãã€ã©ãŒã䜿çšã§ããŸãããã®ãŠãŒãã£ãªãã£ã¯ã babelã§ã¯ãªãã¢ããªã±ãŒã·ã§ã³ãã«ãããã»ã¹ã«çµã¿èŸŒãŸããŠããŸãã
ãããŒããã³TypeScriptïŒtscã䜿çšïŒã®ãããžã§ã¯ãèšå®ã®äŸã
| ãã㌠| TypeScript |
|---|---|
| webpack.config.js | |
|
|
| ãã©ã³ã¹ãã€ã©ãŒèšå® | |
| babel.config.js | tsconfig.json |
|
|
| .flowconfig | |
|
|
ããã«+ã¹ããªãããštscã®ã¢ãããŒãã®éãã¯ãçµã¿ç«ãŠã®ç¹ã§ã¯ãããã§ããæåã®ã±ãŒã¹ã§ã¯ãbabelã䜿çšããã2çªç®ã®ã±ãŒã¹ã§ã¯ãtscã«ãªããŸãã
ãã ããeslintãªã©ã®ãŠãŒãã£ãªãã£ã䜿çšããå Žåã¯éãããããŸããeslintã§ãªã³ãããããã®TypeScriptã«ã¯ãããã«å€ãã®ãã°ãèŠã€ããããšãã§ããç¬èªã®ãã©ã°ã€ã³ã®ã»ããããããŸãããã ãããªã³ã¿ãŒã«ããåææã«ã倿°ã®ã¿ã€ãã«é¢ããæ å ±ãå«ãŸããŠããå¿ èŠããããŸãããããè¡ãã«ã¯ãã³ãŒãããŒãµãŒãšããŠtscã®ã¿ã䜿çšããbabelã¯äœ¿çšããªãã§ãã ããããããããªã³ã¿ãŒã«tscã䜿çšããå Žåãæ§ç¯ã«babelã䜿çšããã®ã¯èª€ãã§ãïŒäœ¿çšãããŠãŒãã£ãªãã£ã®åç©åã¯æå°éã«æããå¿ èŠããããŸãïŒïŒã
| ãã㌠| TypeScript |
|---|---|
| .eslint.js | |
|
|
ã©ã€ãã©ãªã®ã¿ã€ã
ã©ã€ãã©ãªãnpmãªããžããªã«å ¬éããããšãå ¬éãããã®ã¯JavaScriptããŒãžã§ã³ã§ãããããžã§ã¯ãã§äœ¿çšããããã«ãå ¬éãããã³ãŒãã倿Žããå¿ èŠã¯ãªããšæ³å®ãããŠããŸããã€ãŸããã³ãŒãã¯ãã§ã«babelãŸãã¯tscãä»ããŠå¿ èŠãªtraspilationãééããŠããŸããããããã³ãŒãå ã®ã¿ã€ãã«é¢ããæ å ±ã¯ãã§ã«å€±ãããŠããŸããäœããã¹ããïŒ
ãããŒã§ã¯ããçŽç²ãªãJavaScriptããŒãžã§ã³ã«å ããŠãã©ã€ãã©ãªã«æ¡åŒµåãä»ãããã¡ã€ã«ãå«ãŸãããšæ³å®ãããŠããŸãã
.js.flow
ãã¹ãŠã®ã¿ã€ãå®çŸ©ãå«ããœãŒã¹ãããŒã³ãŒããå«ãŸããŠããŸããæ¬¡ã«ããããŒãåæãããšãã«ããããã®ãã¡ã€ã«ãæ¥ç¶ããŠåãã§ãã¯ãè¡ãããšãã§ããŸãããããžã§ã¯ãã®ãã«ããšãã®å®è¡æã«ã¯ããããã®ãã¡ã€ã«ã¯ç¡èŠãããŸããéåžžã®JSãã¡ã€ã«ã䜿çšãããŸããç°¡åãªã³ããŒã§.flowãã¡ã€ã«ãã©ã€ãã©ãªã«è¿œå ã§ããŸãããã ããããã«ãããnpmã§ã®ã©ã€ãã©ãªã®ãµã€ãºãå€§å¹ ã«å¢å ããŸãã
TypeScriptã§ã¯ããœãŒã¹ãã¡ã€ã«ã䞊ã¹ãŠä¿æããããšã¯ãå§ãããŸããããå®çŸ©ã®ãªã¹ãã®ã¿ãä¿æããããšããå§ãããŸãããã¡ã€ã«ãããå Žå
myModule.js
ããããžã§ã¯ããåæãããšãã«ãTypeScriptã¯è¿ãã®ãã¡ã€ã«ãæ¢ããŸãããã®ãã¡ã€ã«ã«ã¯
myModule.js.d.ts
ããã¹ãŠã®ã¿ã€ãã颿°ãããã³ã¿ã€ãã®åæã«å¿ èŠãªãã®ä»ã®ãã®ã®å®çŸ©ïŒã³ãŒãã§ã¯ãããŸããïŒïŒã衚瀺ãããŸããtscãã©ã³ã¹ãã€ã©ãŒã¯ããœãŒã¹TypeScriptãããã®ãããªãã¡ã€ã«ãç¬èªã«äœæã§ããŸãïŒãªãã·ã§ã³ãåç §ïŒ
declaration
ããã¥ã¡ã³ãå ïŒã
ã¬ã¬ã·ãŒã©ã€ãã©ãªã®ã¿ã€ã
ãããŒãšTypeScriptã®äž¡æ¹ã§ãæåã«ãããã®èª¬æãå«ãŸããŠããªãã©ã€ãã©ãªã®å宣èšã远å ããæ¹æ³ããããŸããããããããã¯ããŸããŸãªæ¹æ³ã§è¡ãããŸãã
ãããŒã«ã€ããŠã¯ãFacebookèªäœããµããŒãããããã€ãã£ãããªæ¹æ³ã¯ãããŸããããããããã®ãããªå®çŸ©ããªããžããªã«åéãããããŒåã®ãããžã§ã¯ã ããããŸããå®éãnpmããã®ãããªå®çŸ©ãããŒãžã§ã³ç®¡çããããã®äžŠåæ¹æ³ã§ãããæŽæ°ã®éåžžã«äŸ¿å©ãªãéäžåãæ¹æ³ã§ããããŸããã
TypeScriptã§ã¯ããã®ãããªå®çŸ©ãèšè¿°ããæšæºçãªæ¹æ³ã¯ãã@ typesããã¬ãã£ãã¯ã¹ãä»ããç¹å¥ãªnpmããã±ãŒãžã§ããããå ¬éããããš ã§ãã..ãã©ã€ãã©ãªã®ã¿ã€ãã®èª¬æããããžã§ã¯ãã«è¿œå ããã«ã¯ã察å¿ãã@ types-libraryãæ¥ç¶ããã ãã§ååã§ããããšãã°ã
@types/react
Reactã
@types/chai
chaiãªã©ã§ãã
ãããŒãšTypeScriptã®æ¯èŒ
ãããŒãšTypeScriptãæ¯èŒãã詊ã¿ãéžæãããäºå®ã¯ãNathanSebhastianã®èšäºãTypeScriptVSFlowãããåéãããäžéšã¯ç¬ç«ããŠåéãããŸãã
ããŸããŸãªãã¬ãŒã ã¯ãŒã¯ã«ããããã€ãã£ããµããŒãããã€ãã£ã-ã¯ãã ããŠãšãµãŒãããŒãã£ã®ã©ã€ãã©ãªããã³ãã©ã°ã€ã³ã䜿çšãã远å ã®ã¢ãããŒãã¯ãããŸããã
æ§ã ãªæ¯é è
| ãã㌠| TypeScript | |
|---|---|---|
| äž»ãªè²¢ç®è | ãã§ã€ã¹ãã㯠| ãã€ã¯ããœãã |
| ãŠã§ããµã€ã | flow.org | www.typescriptlang.org |
| Github | github.com/facebook/flow | github.com/microsoft/TypeScript |
| GitHubãéå§ããŸã | 21.3k | 70.1k |
| GitHubãã©ãŒã¯ | 1.8k | 9.2k |
| GitHubã®åé¡ïŒãªãŒãã³/ã¯ããŒãº | 2.4k / 4.1k | 4.9k / 25.0k |
| StackOverflowã¢ã¯ãã£ã | 2289 | 146,221 |
| StackOverflowé »ç¹ | 123 | 11451 |
ãããã®æ°åãèŠããšãç§ã«ã¯ãããŒã®äœ¿çšãæšå¥šããéåŸ³çæš©å©ããããŸããããããããªãç§ã¯ãããèªåã§äœ¿çšããã®ã§ããïŒä»¥åã¯ãããŒã©ã³ã¿ã€ã ãªã©ããã£ãããã§ãã
ãããŒã©ã³ã¿ã€ã
flow-runtimeã¯ããããŒã¿ã€ããã©ã³ã¿ã€ã ã«åã蟌ã¿ãå®è¡æã«å€æ°ã¿ã€ããå®çŸ©ããããã«äœ¿çšã§ããããããŠæãéèŠãªããšãšããŠãå®è¡æã«å€æ°ã®ã¿ã€ãããã§ãã¯ã§ããããã«ãããbabelã®ãã©ã°ã€ã³ã®ã»ããã§ããããã«ãããå®è¡æã«ãããšãã°èªåãã¹ããæåãã¹ãäžã«ãã¢ããªã±ãŒã·ã§ã³ã®è¿œå ã®ãã°ããã£ããã§ããŸãã
ã€ãŸããå®è¡æã«ïŒãã¡ããããããã°ã¢ã»ã³ããªã§ïŒãã¢ããªã±ãŒã·ã§ã³ã¯ããã¹ãŠã®ã¿ã€ãã®å€æ°ãåŒæ°ããµãŒãããŒãã£é¢æ°ã®åŒã³åºãã®çµæãããã³ãã¹ãŠããã¹ãŠããã¹ãŠãæç€ºçã«ãã§ãã¯ããŠããããã®ã¿ã€ãã«æºæ ããŠãããã©ããã確èªããŸããã
æ®å¿µãªããã2021å¹Žã®æ°å¹Žã«ã¯ããªããžããªã®äœæè ã æ å ±ã远å ããŸãã圌ã¯ãã¯ããã®ãããžã§ã¯ãã®éçºã«é¢äžããŠããããéåžžã¯TypeScriptã«åãæ¿ããŠããŸããå®éãæµããç¶æããæåŸã®çç±ã¯ç§ã«ãšã£ãŠéæšå¥šã«ãªããŸãããããŠãTypeScriptãžããããã