Hyperapp‚Ìlogger‚ÌŒ^’è‹`ƒtƒ@ƒCƒ‹‚Á‚Ä‚Ç‚±‚ÅŽè‚É“ü‚è‚Ü‚·‚©H
–l‚Ì’m‚臂¢‚Ì’m‚臂¢‚ª‚Å‚«‚½ƒpƒ\ƒRƒ“ˆê‘ä‚Å‚¨‹àŽ‚¿‚É‚È‚ê‚é‚â‚è•û
–ð‚É—§‚‚©‚à‚µ‚ê‚Ü‚¹‚ñ
ƒO[ƒOƒ‹‚ÅŒŸõ‚·‚é‚Æ‚¢‚¢‚©‚àwƒlƒbƒg‚ʼn҂®•û–@@ƒ‚ƒjƒAƒŒƒtƒkƒmx
19LH5
Typescript‚ÅReact‚ðŽg—p‚µ‚Ä‚Ü‚·‚ªAŒ^’è‹`‚ª‚È‚¢React‚̃‰ƒCƒuƒ‰ƒŠ‚ª‘½‚·‚¬‚ÄA‘å•Ï‚Å‚Í‚È‚¢‚Å‚·‚©H
Œ^’è‹`‚ª‚ ‚Á‚Ä‚àAŒÃ‚‚ÄÅV‚̃‰ƒCƒuƒ‰ƒŠ‚ƈá‚Á‚½‚肵‚Ä‚¤‚ñ‚´‚肵‚Ä‚é‚ñ‚Å‚·‚ªA‚Ý‚È‚³‚ñ‚Í•½‹C‚Å‚·‚©H
props‚‚ç‚¢Ž©•ª‚ÅŒ^’è‹`‚µ‚Ä‚Ç‚¤‚¼
‚È‚¢‚æ‚è‚©ê¡‚©‚Ƀ}ƒVA‚Æ‚¢‚¤ƒXƒ^ƒ“ƒX‚Å‚¢‚½•û‚ª‚¢‚¢
‰½‚Ȃ玩•ª‚Åtyped‚ɃRƒ~ƒbƒg‚·‚ׂ«
Facebook‚ÍReact‚ÌŠJ”‚ðTypescript‚Ås‚í‚È‚¢——R‚Æ‚µ‚ÄAFlow‚Ì•û‚ªŒ^‚ªŒµ–§‚¾‚ÆŒ¾‚Á‚Ä‚¢‚邯‚ÇA
‚»‚Ì•ÓATypescriptŽg‚¢‚Æ‚µ‚Ä‚Í‚Ç‚¤H
>>16
‚»‚êî•ñŒÃ‚‚ËH¡‚ÍTypeScript‚Å‚à‘»F‚È‚¢‚µŒ^î•ñ‚ªW‚Ü‚Á‚Ä‚éts‚Ì•û‚ª—DˆÊ ‚Å‚àTS‚Í„˜_•³ŽG‹›Œ¾Œê‚¾‚æ‚Ë
Œ^’è‹`‚É‚»‚ñ‚È‚É”Y‚Þ——R‚ª‚í‚©‚ç‚ñB
C#‚ÆPython‚â‚Á‚ÄAPython‚Í“®“IŒ^•t‚¯‚È‚ñ‚¾A‚Å‚·‚®Šµ‚ꂽB
js‚ÌŽž‚¾‚¯”Y‚Þ——R‚ª‚í‚©‚ç‚ñB
„‘ª‚·‚é‚ÉA‹°‚ç‚Java“I‚È‘½l”‚É‚æ‚é“y•û“IŠJ”–@‚â‚Á‚Ä‚é‚©‚炾‚낤‚ÆŽv‚¤B
js‚Íl”‚ŃAƒWƒƒƒCƒ‹‚ªŠî–{‚Å‚µ‚åw
Œ^‚ð—‰ð‚Å‚«‚È‚¢’áŠw—ð‚É‚ÍTS‚ÌŠwKƒRƒXƒg‚Í‚‚©‚낤‚È
‚Ü‚ŸA‚¸‚Á‚ÆjQuery‚Æ‚©‚ŃEƒ“ƒR‚Ý‚½‚¢‚Ȭ‹K–ÍLPì‚Á‚Ä‚ê‚΂¢‚¢‚ñ‚¶‚á‚È‚¢‚©H
³’¼‚ÉŒ¾‚¤‚ÆATypescriptŽg‚¦‚é‚ÆŽdŽ–‚Ì•‚ªL‚ª‚邶‚á‚ñ‚©B
‚ ‚Ɖ½‚©ƒJƒbƒRƒCƒC‚µiÎj
‚È‚é‚ׂŽg‚Á‚½•û‚ª‘‚Šo‚¦‚é‚Å‚µ‚åB
Žû“ü‚É’¼Œ‹‚·‚é‚©‚ç‚»‚ꂾ‚¯B
“y•û‚ª‚Ç‚¤‚Æ‚©‚͔ےè‚Å‚«‚È‚¢B
‘ål”‚¾‚ÆŽ–‘O‚ÉŽd—l‚ðƒrƒVƒb‚ÆŒˆ‚ß‚é‚©‚çAŒ^’è‹`‚àŽd—l‘‚É—Ž‚Æ‚µž‚ñ‚Å‚¨‚©‚È‚¢‚Æ‚¢‚¯‚È‚¢B
‚Ü‚ Perl‚âPython‚Å‚Í‚È‚ñ‚ÅŒ^‚É‚±‚¾‚í‚Á‚Ä‚él‚¢‚È‚©‚Á‚½‚Ì‚ÉAJavaScript‚¾‚¯‚¤‚邳‚¢‚Ì‚©‚Í‚æ‚•ª‚©‚ç‚È‚¢‚ËB
Ž©•ª‚Í‚»‚ꂾ‚¯¢ŠÔ‚Ì–{‹C“x‚ª‚‚¢Ø‹’‚È‚ñ‚¾‚낤‚ÆŸŽè‚ɉðŽß‚µ‚Ä‚¢‚é‚æB
>>23
> ‚Ü‚ Perl‚âPython‚Å‚Í‚È‚ñ‚ÅŒ^‚É‚±‚¾‚í‚Á‚Ä‚él‚¢‚È‚©‚Á‚½‚Ì‚ÉAJavaScript‚¾‚¯‚¤‚邳‚¢‚Ì‚©‚Í‚æ‚•ª‚©‚ç‚È‚¢‚ËB
Perl‚âPython‚Å‚Íu»•iv‚ðì‚ç‚È‚¢‚©‚炾‚낤B perl‚Í‚½‚¾‚̃Sƒ~
python‚ÍTypeHinting“±“ü‚³‚ꂽ‚¼
‚»‚ñ‚È‚±‚Æ‚à’m‚ç‚È‚¢‚Ì‚©i•ð‚êAš}ÎA—‘§j
–{—ˆƒXƒNƒŠƒvƒgŒ¾Œê‚Í“®“IŒ^•t‚Å—Ç‚¢B
‚½‚¾JavaScript‚Í‹ß”N”Ä—p«‚ð‘‚µ‚ÄAˆê”Ê“I‚ȃXƒNƒŠƒvƒgŒ¾Œê‚̈悩‚ç’´‰z‚µ‚‚‚ ‚éB
TypeScript‚ÍJavaScript‚ð–{Ši“I‚ȃVƒXƒeƒ€ŠJ”Œ¾Œê‚ɸŠi‚³‚¹‚éˆ×‚ÌŽŽ‚݂̈ê‚ÂB
‚½‚¾‚±‚ê‚Í”n‚Ìn‚Å‚à‚ ‚èAJavaScript‚ªƒXƒNƒŠƒvƒgŒ¾Œê‚©‚瑲‹Æ‚µ‚½‚çA‘æ“ñ‚ÌJava‚Æ•Ï‚í‚ç‚È‚¢B
ˆÓŠO‚Æ‚»‚ê‚ð–]‚ñ‚Å‚é“z‚Í‘½‚¢‚©‚à‚ÈB
ÓIŒ^•t‚È‚ÇBASIC‚©‚çŽÀ‘•‚³‚ê‚Ä‚¢‚½‚Ì‚¾‚©‚çAÌ‚É–ß‚Á‚½‚ÆŒ¾‚¤Ž–‚¾B
‘Qi“IŒ^•t‚¯‚Ì–ÚŽw‚·‚Æ‚±‚ë‚ÍAJava‚ÌŒÃL‚¢Œ^‚Ƃ͈قȂ邵A‚»‚Ì”FŽ¯‚ÍŠÔˆá‚Á‚Ä‚¢‚é
“y•û‚¾‚ÌŒ¾‚Á‚Ä‚é”nŽ‚͘_ŠO
Dart‚Á‚Ä‚Ç‚±‚¢‚Á‚½‚ñH‚Ç‚¤‚È‚Á‚Æ‚é‚ñH
jQuery‚Ý‚½‚¢‚Ȃ̂‚©‚Á‚Ă郔ƒ@ƒJ‚ª‘›‚¢‚Å‚¢‚é‚ñ‚¾‚낤
‚ ‚ñ‚È‚à‚ÌŽg‚í‚È‚¢‚Æ‚¢‚¯‚È‚¢‚È‚çA—vŒ’è‹`‚ª‚»‚à‚»‚àŠÔˆá‚¦‚Ä‚¢‚éB
TypeScript‚àŽg‚¦‚È‚¢ƒ”ƒ@ƒJ‚Í‘¶Ý‰¿’l‚ª‚È‚¢B
‰´‚ç‚Í“y•û‚¶‚á‚È‚‚ÄAƒvƒƒOƒ‰ƒ~ƒ“ƒO‚ÌEl‚È‚ñ‚¾‚æB
Ž„‘啶Œn‚̃”ƒ@ƒJ‚Í‚¨‚Æ‚È‚µ‚ƒGƒNƒZƒ‹‚Å‚à‚¢‚¶‚Á‚Ä‚ë‚æ
‚Ç‚¤‚µ‚½H
‹}‚É·‚èオ‚Á‚Ä‚«‚½‚È
>>26
¢ ‚½‚¾JavaScript‚Í‹ß”N”Ä—p«‚ð‘‚µ‚Ä
› ‚½‚¾Aƒuƒ‰ƒEƒU‚Í‹ß”N”Ä—p«‚ð‘‚µ‚ÄA‚»‚ê‚É•t‘Ñ‚·‚éƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Å‚ ‚éJavaScript‚à
WebAssembly‚à‚Ç‚¤‚â‚çƒ}ƒW‚Å‚â‚Á‚Ä‚é‚悤‚¾‚µA
ŽÀŒ»‚µ‚½Û‚É‚ÍJavaScript‚àˆê‚‚̑I‘ðŽˆ‚É‚·‚¬‚È‚¢B
Œ^‚ ‚èAŒ^„˜_AŒ`–³‚µŒ¾Œê‚ðŽ©—R‚É‘I‚ׂé‚悤‚É‚È‚éB–ܘ_Java‚àŠÜ‚ß‚ÄB
i‚Æ‚¢‚¤‚©–{—ˆJava‚ª‹@”\‚µ‚Ä‚¢‚ê‚ÎWebAssembly‚Í•s—v‚¾‚Á‚½‚Í‚¸)
‰´Ž©g‚ÍTS‚ðŽg‚Á‚Ä‚Í‚¢‚È‚¢‚Ì‚¾‚ªA
ƒRƒ“ƒZƒvƒg“I‚É‚Íu‘‚«‚½‚¢‚Æ‚±‚낾‚¯‘‚¯‚éŒ^v‚ÌTS‚ª‚¢‚¢‚ÆŽv‚¤‚æB >>29
‚¨‘O‚̓}”Å‚©‚ço‚Ä‚‚é‚È
„ƒ”ƒ@ƒJ‚ɬ‚¶‚Á‚ÄJS‚ð‚â‚鎖‚É‚È‚Á‚½‚Ì‚¾‚ª
„Angular‚̃hƒLƒ…ƒƒ“ƒg‘‚¢‚½“zŽ‚Ë‚æ
„
„Ž„‘啶Œn‚ªŠiD•t‚¯‚ăƒU‚Æ•ª‚©‚è‚É‚‚‘‚¢‚Ă邾‚ë
„‰½Œ¾‚Á‚Ä‚é‚Ì‚©‚³‚Á‚ς肾‚í
„
„ƒ”ƒ@ƒJ‚É•¶Í‚©‚©‚¹‚é‚È‚æ
Angular.js‚̉ðà•¶‚à—‰ð‚Å‚«‚È‚¢“z‚ª‰½Œ¾‚Á‚Ä‚ñ‚¾‚æ Šm‚©‚Ƀ”ƒ@ƒJ‚¾‚È‚Ÿ
‰ðà•¶ˆÈ‘O‚ÉAAngular‚ÍVue•À‚̃Sƒ~‚È‚ñ‚¾‚©‚ç
‚»‚ÌŽw“E‚Í‚ ‚³‚Á‚Ä‚¾‚í
Angular‚Ý‚½‚¢‚ȃSƒ~‚ɓ‚¢‰ðà•t‚¯‚Ä‚é‚Ì‚ªˆ«‚¢
Ž„‘啶Œn‚̃NƒY‚ªŽ©•ª‚ç‚ðˆÌ‚»‚¤‚ÉŒ©‚¹‚éˆ×‚É‚â‚Á‚Ä‚ñ‚Ì‚ªƒoƒŒƒoƒŒ‚¾
ƒ”ƒ@[ƒJ‚Í‹~‚¢‚悤‚ª‚È‚¢‚È
‰´‚Í’·”NJavaˆê‹Ø‚¾‚Á‚½‚ª•Ï”‚ÉŒ^‚ª–³‚¢‚Ì‚È‚Ç‚ ‚蓾‚È‚¢‚í
Žd—l‘‚ÉŒ^‚ª‘‚¢‚Ä‚È‚¢‚È‚ñ‚ÄŽ©•ª‚ÅŒ^l‚¦‚ë‚Æ‚Å‚àŒ¾‚¤‚Ì‚©H
ƒWƒƒƒbƒv‚̊ÂÁ‚½‚ꂽ‹ûSE‚É‚Æ‚Á‚Ä“s‡‚Ì‚¢‚¢˜b‚¾‚æ‚È
TypeScript—Ç‚¢‚¶‚á‚Ë[‚©
‚±‚¿‚ç‚ÍŽd—l‘‚ðƒR[ƒh‚É—Ž‚Æ‚µž‚Þ‚Ì‚ªŽdŽ–‚¾
ÝŒv‚ÍÝŒvê–åE‚ª‚¢‚Ä‚‚¢‹à‚à‚ç‚Á‚Ä‚ñ‚¾‚ëH
Œ^‚Í‚»‚¢‚‚炪l‚¦‚é‚ñ‚¾‚æBÚׂðƒvƒƒOƒ‰ƒ}[‚ÉŠÛ“Š‚°‚µ‚Ă鎞“_‚Å‹ûŽd—l‚È‚ñ‚¾‚æB
ƒ”ƒ@[ƒJI
‚±‚¤‚¢‚¤Œ^‚ª‰½‚È‚Ì‚©‚à’m‚ç‚ñƒQƒFƒW‚ÍŒ^–³‚µ•³Œ¾Œê‚̃Eƒ“ƒ|ƒRƒyƒ`ƒv[‚Å•³‚É‚Ü‚Ý‚ê‚Ä‚ë‚—
ts‚Ícode‚ƃZƒbƒgŠ´‚ ‚é‚©‚çide‚ ‚Á‚Ä‚±‚»‚ÌŒ^•tŒ¾Œê‚Å‚·‚æB
‚»‚¤‚¢‚¤ˆÓ–¡‚ÅÅ‚B
code‚ÌExtension‘‚¯‚邵‚Ë
ƒ^ƒCƒvƒXƒNƒŠƒvƒg‚ÅVS Code‚ªÅ‚B
‚½‚܂ɉ”•M‚ÆŽ†‚ÅŽè‘‚«‚ŃR[ƒh‚©‚¯‚é‚ÆŽ©Ì‚·‚é“z‚¢‚邯‚ÇA‰´‚Í‚»‚¤‚¢‚¤–³—‚¾‚µ–³‘Ê‚¾‚ÆŽv‚¤B
ƒR[ƒh•âŠ®‹@”\‚ª1”Ô—Ç‚¢Š´‚¶B
‚±‚̃XƒŒ‚Ì”ŒZ‚Í•’i‚ǂ̂悤‚ÈŠJ”‚ÅTypeScript‚ðŽg‚Á‚Ä‚¨‚ç‚ê‚é‚Ì‚©‚ÈH
>>38
ŠwZ‚Åo‚³‚ꂽ‰Û‘èFXB
AE‚µ‚½‚烌ƒxƒ‹’á‚¢“z‘½‚»‚¤‚¾‚©‚çA‰´‚Í–³‘oo—ˆ‚é‚ÆŽv‚¤‚ºB Œ^‚ÌŠT”O‚à•ª‚©‚Á‚Ä‚È‚¢ƒoƒJ‚ª‚¢‚Á‚Ï‚¢‚¢‚é‚悤‚¾‚µ
‰´‚Ì•û‚ª’mŽ¯‚ÍゾB
˜_”j‚µ‚Ä‘ŠŽè‚ª‰÷‚µ‚ª‚Á‚Ä‚é‚Ì‘z‘œ‚·‚é‚ÆŠy‚µ‚¢B
‚±‚ñ‚ȃ[ƒgƒ‹‚ȘA’†‚É•‰‚¯‚é‹C‚Í‚µ‚È‚¢B
‚à‚¤‚·‚®‘S‚Ä‚Ìjava—L—¿‚É‚È‚é‚©‚çjvmŒn‚Íâ–Å‚·‚é‚ñ‚¶‚á‚È‚¢‚ÌH
‚´‚Ü‚Ÿwwww
‰´‚ªŽÐ‰ïl‚É‚È‚Á‚½‚ç“y•û‚Ç‚à‚ÉFX‹³‚¦‚½‚é‚æ
ŽS‚ß‚È“y•û‚Ç‚àwww
‚±‚¤‚¢‚¤“ª‚Å‚Á‚©‚¿‚͎Љï‚Éo‚Ä‚©‚ç’ׂ³‚ê‚ăj[ƒg‚É‚È‚Á‚½‚è‚·‚é‚©‚ç‚ËB•×‹‰ï‚ÉŽQ‰Á‚µ‚Ä‘‚ß‚É•@‚Á’Œ‚ðÜ‚éŒoŒ±‚ð‚µ‚Æ‚¢‚½‚Ù‚¤‚ª—Ç‚¢
UWPƒAƒvƒŠŠJ”‚ÅTypescript+React‚ðŽg‚Á‚Ä‚¢‚é‚Ì‚ÍŽ©•ªŠÜ‚ß‚Ä”l‚¾‚낤‚ÈB
ƒAƒvƒŠ‚È‚ç‘f’¼‚ÉC#‚Åì‚ê‚æ
jsƒvƒvƒv
ƒuƒ‰ƒEƒU‚̃AƒhƒIƒ“‚©‚çƒlƒCƒeƒBƒuƒAƒvƒŠ‚àŠÜ‚ß‚ÄTypeScript‚¾‚¯‚Å‘å’ï‚ÌŽ–‚Ío—ˆ‚é
>>44
Ú‚µ‚Breact‚Æ‘Š«—Ç‚¢‚æ‚Ë TypeScript‚Å‚«‚騉´¦‚¢
ƒlƒgƒEƒˆ“IDQNŽvl–@
‘f’¼‚ÉC#Žg‚¦‚΂Ÿ`
c#‚Åweb‚̃tƒƒ“ƒgƒGƒ“ƒh‘‚¯‚È‚¢‚æ‚Ë
>>47
>Ú‚µ‚Breact‚Æ‘Š«—Ç‚¢‚æ‚Ë
Ú‚µ‚‚à‰½‚àAWindows10‚Íjs+html‚ŃfƒXƒNƒgƒbƒvƒAƒvƒŠ‚ªŠJ”‚Å‚«‚é‚©‚çA‚»‚ê‚Ń\ƒtƒg‚ðì‚Á‚Ä‚¢‚邾‚¯B
‚½‚¾UI‚ð‘S•”ì‚é•K—v‚ª‚ ‚éB >>49
Å‹ßBlazor‚Æ‚©‚¢‚¤‹ˆø‚È‹Zp‚ªo‚Ä‚«‚Ă邼 TypeScript‚ÍÜŠp‚È‚çC#‚ÆŒp³‚Æ‚©‚Ì‘‚«•û‚à“ˆê‚µ‚Ä—~‚µ‚©‚Á‚½‚È‚Ÿ
Javascript‚̃tƒŒ[ƒ€ƒ[ƒN‚Å‚Å‚©‚¢Šçw
JavaƒvƒƒOƒ‰ƒ}[‚©‚炵‚½‚炨΂¢Ží‚Å‚·‚æ
ƒ”ƒ@ƒJ‚Á‚Û‚‚Ä΂¦‚é
JavaScript‚â‚ç‚È‚¢‚Å‚¢‚«‚È‚èTypeScript‚©‚ç•×‹‚·‚é‚Ì‚Á‚ăAƒŠH
‚Å‚àjQueryŠo‚¦‚悤‚Æ‚µ‚½‚çJS‚à•×‹‚µ‚È‚«‚á‚È‚ç‚È‚ñ‚Ì‚æ‚Ë
‚‚¤‚©Œ^ƒVƒXƒeƒ€ˆÈŠO‚ÍJavaScript‚È‚ñ‚¾‚©‚çATypeScript‚ðŠo‚¦‚邱‚Æ‚Í•’Ê‚ÉJavaScript‚ðŠo‚¦‚邱‚Æ‚É‚Ù‚Ú“™‚µ‚¢
“Á‚ÉÅV‚ÌJavaScript‚É•ÏŠ·‚·‚é‚ÆA’Pƒ‚ÉŒ^Žw’肾‚¯‚ª–³‚‚È‚Á‚½‚à‚Ì‚ªo—Í‚³‚ê‚邱‚Æ‚ª‘½‚‚È‚Á‚½‚È
‚Þ‚µ‚ëts‚©‚ç“ü‚Á‚½•û‚ª‚¢‚¢‚‚ç‚¢‚¾
¶‚Ìjs‚͊댯
‰´‚àTypeScript‚©‚çŠw‚ñ‚¾Œû‚¾B
ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŽg‚¢•û‚Æ‚©vscode‚ª‹³‚¦‚Ä‚‚ê‚é‚悤‚É‚È‚é‚©‚ç‚Þ‚µ‚ëjs‚𑃂̂܂܊w‚Ô‚æ‚è’²Žq‚ª—Ç‚¢
ƒrƒ‹ƒh‚·‚é‚Ì‚ß‚ñ‚Ç‚‚³‚¢
TypeScript‚̂܂܃ŒƒXƒ|ƒ“ƒX‚ð•Ô‚µ‚Ä“®‚‚悤‚É‚µ‚Ä‚Ù‚µ‚¢
Typescript ‚©‚ç‚â‚é‚É‚àA—Ç‚¢‘Ђª–³‚‚È‚¢H
JavaScript ‚Ì—Ç‚¢‘ЂŊî‘bŠw‚ñ‚Å‚©‚çTypescript ‚â‚Á‚½•û‚ª‚í‚©‚è‚â‚·‚¢‹C‚ª‚·‚é
‘ЂƂ©—¬‚ꂪ‘¬‚·‚¬‚ÄŒü‚¢‚Ä‚È‚¢‚í
ʼn‚É‚â‚錾ŒêˆÈŠO‚ÅŒ¾Œê‚ðŠw‚Ô–Ú“I‚őДƒ‚¤‚È‚ñ‚ÄC/C++‚‚ç‚¢‚¾‚ë
‚»‚±‚Ü‚Å•Ï‚í‚ç‚È‚¢‚Ì‚Ë ˆÀS
ts‚©‚çŠw‚ñ‚Å‚Ý‚Ü‚·
ŠF‚³‚ñ‹³‚¦‚Ä‚‚ê‚Ä‚ ‚肪‚Æ‚¤`
TypeScript‚É __LINE__ ƒ}ƒNƒ‚Ý‚½‚¢‚Ès”Ô†–„‚ßž‚Þ‹@”\‚Á‚Ä‚È‚¢‚æ‚ËH
ƒfƒoƒbƒO—p‚É‚ ‚Á‚½‚ç—Ç‚©‚Á‚½‚ñ‚¾‚¯‚ÇB
>>62
‚ñ‚È‚±‚½[‚È‚¢
Effective JavaScript‚É‘‚¢‚Ä‚ ‚é‚悤‚È‚±‚Æ‚ªŽ©‘R‚Æ‘S‚Ä—‰ð‚Å‚«‚Ä‚é‚È‚ç—v‚ç‚È‚¢‚¯‚ÇA‚»‚ñ‚È“z‚ª5ch‚ðŒ©‚Ä‚é‚킯‚È‚¢‚µ Effective‚ÍŠm‚©‚É“Ç‚ÞˆÓ–¡‚ª‚ ‚é–{‚¾‚í
‚Å‚à‚»‚êJavaScriptŠù‚É’m‚Á‚Ä‚élŠÔ‚ª“Ç‚Þ–{‚¾‚ë
eff‚ÍŽž‘ã’x‚ê
ts‚â‚Á‚Ä‚è‚ᔼ•ª‚Í’m‚é•K—v‚à–³‚¢
ts‚»‚ñ‚È‚É‚¢‚¢‚©‚È‚ŸH
jQuery‚©‚çvueAangular‚Ü‚ÅFX‚â‚Á‚Ă邯‚ÇA—˜“_‚ª‚æ‚•ª‚©‚ç‚È‚¢‚æB
‚»‚çjQuery‚©‚çvueAangular‚È‚ñ‚Ęe“¹‚Ɉí‚ꂽŽž‘ã’x‚ê‚̃Sƒ~Žg‚Á‚Ä‚éƒZƒ“ƒX‚Ì‚È‚¢A
‚Ú‚ñ‚â‚肵‚½ƒ{ƒ“ƒNƒ‰‚É‚Æ‚Á‚Ä‚ÍA—˜“_‚à•³‚à‹C•t‚¯‚È‚¢‚í‚È‚—
angular‚Í1Œn‚Æ‚©G‚Á‚Ä‚½‚ñH
¡‚Íts‚Å‘‚©‚ê‚Ä‚é‚Í‚¸‚¾‚©‚çts•K{‚Ý‚½‚¢‚È‚à‚ñ‚Å‚íH
ƒ}ƒW‚È‚çXamarin‘埗˜‚Å‚·‚â‚ñ
>>71
> 2017”N10ŒŽ‚©‚ç
‚È‚ñ‚Ƃ䂤¡‚³‚çƒÖƒÖƒÖ
‚»‚µ‚ÄAndroid‚Å‚ÍKotlin•W€‰»‚Æ•¹‚¹‚ÄTS‚à•W€‰»‚³‚ꂽ‚Ì‚ð‚²‘¶’m‚È‚¢‚Ì‚Å‚·ƒ“ƒSHƒÖƒÖƒÖ TS‚Ì•W€‰»‚ÍGoogleŽÐ“à‚̘b‚ÅAAndroidŠÖŒW‚È‚‚ËH
‚Ý‚ñ‚ÈBabel‚ªTS‘Ήž‚É‚È‚Á‚Ä‚¤‚ꂵ‚¢H
•Ê‚ÉB‰½‚à•Ï‚í‚ç‚ñB
”Ž–î‚Ńoƒx‚Á‚Ä‚é‚Ì‚ÉFlow‚à“ü‚ê‚Ä‚È‚¢ƒSƒ~‚Ç‚à‚Í
ÅV‚̃oƒxƒ‹‚È‚ñ‚ÄŽg‚í‚È‚¢‚µŽg‚¦‚È‚¢‚¾‚낤‚©‚ç‘Š•Ï‚í‚炸ƒRƒq[ƒXƒNƒŠƒvƒgi”šj‚Ý‚½‚¢‚ȶƒJƒXƒWƒƒƒoƒXƒN‚¾‚µ
Šù‚ÉTSŽg‚Á‚Ä‚é“z‚ç‚ÍTS‚¾‚µ
‰½‚à•Ï‚í‚ç‚ñB
¡‚³‚çƒhƒ„Šç‚Å‚ä‚é‚¢ƒ‹[ƒ‹Œµ‚µ‚¢ƒ`ƒFƒbƒN‚Æ‚©Œ¾‚Á‚Ä‚é‚Ì‚‚»‚Þ‚©‚‚
Œµ‚µ‚¢ƒ‹[ƒ‹‚ª¡‚Ü‚Å•’Ê‚¾‚Á‚½‚Ì‚Í
ƒAƒoƒEƒg‚È‚Ì‚ð‹–‚µ‚½‚ç‚ß‚¿‚á‚‚¿‚á‚È‚Ì‚ð·‚µž‚ñ‚ňÓ}“I‚Ɋ‹«”j‰ó‚µ‚Ä‚¢‚‰ïŽÐ‚ª‚¢‚½‚©‚炾
‚Ä‚ß[‚炾‚¯ˆÀ‘S’n‘Ñ‚¾‚©‚ç‚Á‚Ä
‘‚¢‚Ì‘S‚Ä‚ÌJSƒvƒƒWƒFƒNƒg‚ªTS‚É‚È‚è‚Ü‚·‚悤‚É
>>51
‚ß‚¿‚á‚‚¿‚ád‚‚ăXƒ}ƒz‚Å‚Í‚Ü‚¸“®‚©‚È‚¢ƒŒƒxƒ‹‚Á‚Ä‚ñ‚¶‚á‚È‚©‚Á‚½‚Á‚¯H import‚Í‘¼ƒtƒ@ƒCƒ‹‚̃Nƒ‰ƒX‚ðŽ‚Á‚Ä—ˆ‚ê‚é‚悤‚É‚·‚é‚Ì‚æ‚Ë
@xxxxx‚̃fƒRƒŒ[ƒ^‚Ì–ðŠ„‚ª‚í‚©‚ç‚È‚¢‚Ì‚¾‚¯‚Ç’N‚©‹³‚¦‚Ä‚‚ê‚ñ‚©‚ËEEE
u•t‰Áî•ñ‚ðclass‚âmethod“™‚É•t—^‚·‚邽‚ß‚ÌŽd‘g‚Ýv‚Á‚Ä‚È‚ñ‚¼
Java‚Å‚¢‚¤ƒAƒmƒe[ƒVƒ‡ƒ“‚炵‚©‚ç‚»‚ê‚à’²‚ׂ½‚¯‚Ç‚í‚©‚ç‚È‚¢EEEO‚O
python‚̃fƒRƒŒƒ^‚Æ‚¢‚Á‚µ‚å
TypeScript‚ŃWƒFƒlƒŠƒNƒX‚ðŽg‚Á‚½‚Æ‚«AC++‚Å‚¢‚¤ƒeƒ“ƒvƒŒ[ƒg‚Ì“ÁŽê‰»‚̂悤‚È‚±‚Æ‚Á‚Ä
‚Å‚«‚È‚¢‚à‚ñ‚Å‚·‚©‚ËH
function func<T>(x) ‚ÅT‚ªnumber‚Æstring‚ÌꇂƂŕʂ̈—‚ª‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ÇB
Œ^î•ñ‚ÅŽÀۂɌĂԊ֔‚̃I[ƒo[ƒ[ƒh‚ÌU‚蕪‚¯‚Í‚Å‚«‚½‚è‚Í‚µ‚È‚¢
‹¤—pŒ^ string | number ‚ðŽg‚¦‚Î string ‚Æ number ˆÈŠO‚ÌŒ^‚Í“ü‚ç‚È‚‚È‚é
ŽÀ‘••”•ª‚Í typeof arg === 'string' ‚Æ‚©‚Å•ªŠòB•Ô‚è’l‚ÌŒ^‚Í„˜_‚³‚ê‚é
„˜_‚ªŽv‚Á‚½‚悤‚É‚¢‚©‚È‚»‚¤‚È‚ç mapped type Žg‚¤‚È‚èƒI[ƒo[ƒ[ƒh‚Ì錾‚ð‘‚¢‚½‚肵‚Ä‚à—Ç‚¢
‚ ‚肪‚Æ‚¤B‚â‚Á‚Ï‚èƒ_ƒ‚©B
> typeof arg === 'string'
T‚ªstring‚¾‚Á‚½‚ç'string'‚Æ”äŠr‚·‚é‚Á‚Ä‚Ì‚ð‚â‚肽‚©‚Á‚½B
Typescript‚̃Rƒ“ƒpƒCƒ‰‚̃\[ƒXƒR[ƒh‚ðŒ©‚½‚ªA
swicth•¶‚É‚æ‚éðŒ•ªŠò‚ª——p‚³‚ê‚Ä‚¢‚Ä”ü‚µ‚¢ƒ\[ƒXƒR[ƒh‚Å‚Í‚È‚©‚Á‚½B
‚à‚Á‚Æ—Ç‚¢ÝŒv‚ª‚ ‚é‚Í‚¸B
\•¶–؂̂悤‚È\‘¢‚É‚Í‘½‘Ô‚Í‚¤‚Ü‚ƒ}ƒbƒ`‚µ‚È‚¢‚ñ‚¾‚æ
\•¶‰ðÍ‚Æ‚©ðŒ•ªŠò(ó‘Ô‘JˆÚ)‚̉ò‚¾‚ë
ó‘Ô‘JˆÚ‚Æ‚©switch•¶‚»‚Ì‚à‚Ì‚¾
>>88
‚»‚¤Žv‚¤‚Ȃ炨‘O‚ª‰ü‘P‚µ‚ăvƒ‹ƒŠƒN‘—‚Á‚Ä‚à‚¢‚¢‚Ì‚æ >>91
‚È‚º‚‹M‚ȃnƒCƒNƒ‰ƒXƒGƒ“ƒWƒjƒA‚̉´—l‚ª‚½‚¾“‚«‚¹‚É‚á‚È‚ç‚ñ‚Ì‚¾H
ƒoƒJ‚È‚Ì‚©H Typescript‚̃Rƒ“ƒpƒCƒ‰‚̃Aƒ‹ƒSƒŠƒYƒ€‚͉½‚Å‚·‚©H
ƒ\[ƒXƒR[ƒh‚ðŒ©‚½‚Æ‚±‚ëÄ‹A‰º~‰ð͂炵‚¢‚¯‚ÇA‚»‚ꂾ‚ƶċA‚Å–â‘肪o‚é‚æ‚ËB
ƒnƒCƒNƒ‰ƒX‚̉´—l‚ªAE‚µ‚½‚ç’჌ƒxƒ‹‚Ì“y•û‚ðRŽU‚炵‚·
‚T‚ƒ‚ˆ‚É‚È‚Á‚Ä‚©‚ç‹}‚ÉŽ©•ª‚Ì‘‚«ž‚Ý‚ÉŒëA‘‚¦‚½
â‘Ή½‚©‚ ‚é
AE‚µ‚Ä‚È‚¢‚Ì‚©‚æw
ƒnƒCƒNƒ‰ƒX‚È‚çAE‚È‚ñ‚Ä‚µ‚È‚‚Ä‚àŠw¶‚Ì“à‚©‚çˆø‚Žè‚ ‚Ü‚½‚¾‚ë
‚Ü‚½‚Í‹N‹Æ‚µ‚ë‚æ
¡‚ÌEê‚Åts+Vue.js‚Åì‚Á‚Ä‚éˆÄŒ‚ª‚ ‚é‚ñ‚¾‚¯‚ÇAƒR[ƒh‚Ì”ì‘剻‚Æ‹¤‚É
Œ^ƒ`ƒFƒbƒN•t‚«‚̃rƒ‹ƒh‚É10•ªˆÈã‚©‚©‚é‚悤‚É‚È‚Á‚¿‚á‚Á‚ÄŒ^ƒ`ƒFƒbƒN‚È‚µ‚̃qƒ‹ƒh‚É•ÏX‚µ‚Ä‚µ‚Ü‚Á‚Ä‚é‚ñ‚¾‚¯‚Ç
‚»‚¤‚¢‚¤Ž–—á‚Á‚Ä‘¼‚Ì‚Æ‚±‚ë‚É‚à‚ ‚éH
¢ŠE‚Å‚à—L”‚Ì‘å‹K–̓\ƒtƒgƒEƒFƒA‚Å‚ ‚éVSCode‚ªTypeScript‚Ńrƒ‹ƒh‚³‚ê‚Ä‚¢‚éˆÈãA
—˜—pŽÒ‚̃XƒLƒ‹‚Ì–â‘è‚Å‚µ‚©‚È‚¢‚È
‚Ü‚ŸA¡‚Ç‚«Vue‚ð‘I‚ñ‚¶‚Ⴄ‹Zp—ÍER”üŠá‚Ì‚È‚¢‚Æ‚±‚¶‚Ⴕ‚傤‚ª‚È‚¢‚ñ‚¶‚á‚È‚¢‚©H
•³‚¤‚邳‚¢ƒ|ƒ“ƒRƒcƒEƒCƒ“ƒhƒEƒYXP‚Æ‚©Žg‚Á‚Ä‚»‚¤
ReactŽg‚¢‚ª‚æ‚Œ¾‚¤‚æ‚ÈB‹Zp—Í&R”üŠáB
–‚ŒA‚É‚È‚Á‚Ä‚é‚Ì‚ð‹Zp—Í‚ÆŒ¾‚¢Š·‚¦‚ÄA‚»‚̃A[ƒLƒeƒNƒ`ƒƒ‚ð”ü‚ÆŒ¾‚¢Š·‚¦‚é‚â‚ÂB
‚¤‚¿‚̃vƒƒWƒFƒNƒg‚àƒrƒ‹ƒhŽžŠÔ5•ª‚È‚ñ‚Å‚Ç‚¤‚É‚©‚µ‚½‚¢‚È‚ŸB
makedepend+make‚ª—~‚µ‚¢B
>>98
‚»‚ê‰Â΂µ‚‚ËHvscodeƒrƒ‹ƒh‚µ‚½‚±‚Æ‚ ‚é‚ÌH >>99
mbp2017‚‚©‚Á‚Ä‚éBƒƒ‚ƒŠ‚Í8gb‚¾‚¯‚Ç >>103
ƒ`ƒƒƒCƒj[ƒY‚ÉK”öU‚éƒKƒ‰ƒpƒSƒXVue–¯‚É‚Í‚¨Ž—‡‚¢‚̃Sƒ~‚¾‚È‚— module ‚Æ namespace‚ÌŽg‚¢•ª‚¯‚Í
‚Ç‚¤‚â‚ê‚΂¢‚¢‚ÌH
Žg‚¢•ª‚¯‚é‚à‚Ì‚Å‚Í‚È‚¢
module‚Ínamespace‚É’u‚«Š·‚¦‚ç‚ꂽ
í‚Énamespace‚ðŽg—p‚¹‚æ
type ‚Æ interface ‚ÌŽg‚¢•ª‚¯‚Í
‚Ç‚¤‚â‚ê‚΂¢‚¢‚ÌH
>>108
‚قڈꂾ‚©‚ç‹C‚É‚µ‚È‚‚Ä‚¢‚¢B
Typescript‚ÌŽd—l‘‚É‚àu”ñí‚ÉŽ—‚Ä‚¢‚év‚Æ‘‚¢‚Ä‚ ‚éB
‚½‚¾Ainterface‚Í
inteface Point {
x:number:
}
interface Point {
y:number:
}
‚Æ‚¢‚¤‚悤‚ɃvƒƒpƒeƒB‚̒ljÁ‚ª‚Å‚«‚邪Atype‚Í‚Å‚«‚È‚¢B‚»‚ê‚®‚ç‚¢‚µ‚©ˆá‚¢‚ª‚È‚¢B TSLint‚̃fƒtƒH‚ªtype‚æ‚èinterface‚ð„‚µ‚Ä‚‚é‚©‚ç‚Æ‚è‚ ‚¦‚¸interface‚É‚·‚鎖‚ª‘½‚¢
>>110
‚±‚ꃃ“ƒX‚¾‚ªtype‚µ‚©Žg‚¦‚È‚¢‹@”\‚È‚©‚Á‚½‚Á‚¯H Œð·Œ^A‹¤—p‘ÌŒ^‚ð’è‹`‚Å‚«‚é‚Ì‚Ítype‚¾‚¯‚¾‚ÈB
—Ⴆ‚Î file1.ts‚ð•ÒW‚µ‚Ä‚¢‚ÄAƒoƒbƒNƒAƒbƒv‚Æ‚µ‚Ä‚»‚̃tƒ@ƒCƒ‹‚ð•¡»‚µ‚Ä
file1 - ƒRƒs[.ts
‚ðì‚Á‚½‚Æ‚·‚é‚ÆAŠÖ”–¼‚ªd•¡‚µ‚Ä‚¢‚Ü‚·‚Ý‚½‚¢‚ȃGƒ‰[‚ªƒ_ƒ_ƒ_[‚Æ
o‚é‚ñ‚Å‚·‚ªA‚ǂ̂悤‚É‘Îô‚·‚ê‚Ηǂ¢‚Å‚µ‚傤‚©H
Ž©•ª‚Í‚¢‚‚àƒoƒbƒNƒAƒbƒv‚Ífile1.ts.bak‚Á‚Ä•t‚¯‚Ä‚éB
>>115
ƒT[ƒo[‚ª•K—v‚È‚ñ‚Å‚µ‚åH
‚»‚ñ‚È‚ÌŽ‚Á‚Ä‚¢‚È‚¢‚µ git‚ɃT[ƒo‚ª•K—v‚Æ‚©³‹C‚©
‚¢‚¢‚©‚ç‚Æ‚è‚ ‚¦‚¸ƒ`ƒ…[ƒgƒŠƒAƒ‹‚â‚Á‚Ä‚Ý‚ë
>>118
ƒ`ƒ…[ƒgƒŠƒAƒ‹‚Ç‚±‚É‚ ‚é‚Ì‚æH >>119
man git
‚ʼnpŒê‚ð“Ç‚Þ
‚Å‚àAŒN‚É‚Í‚»‚ñ‚È‹Zp‚àŠw‚ફ‚à‚È‚³‚»‚¤‚¾‚©‚çA
‚â‚Á‚Ï‚èfile1 - ƒRƒs[.ts.bak181110‚Á‚Ä‚·‚é‚Ì‚ª‚¢‚¢‚ÆŽv‚¤‚ñ‚¾B
‚¢‚âŒN‚ðƒoƒJ‚É‚µ‚Ä‚é‚킯‚Å‚Í‚È‚‚ÄB
‰Ž‚͉Ž‚炵‚¢¶Šˆ‚ð‚µ‚½•û‚ªK‚¹‚¾‚ÆŽv‚¤‚©‚炳B‚ËB >>119
‚±‚êˆÈã‚Í‘¼Š‚Å‚â‚Á‚Ä‚‚ê
‚¨‘O‚³‚ñ‚ÌŽ¿–â‚ɑ΂·‚é‰ñ“š‚Í
* •ÒWƒoƒbƒNƒAƒbƒv‚ðƒtƒ@ƒCƒ‹ƒRƒs[‚Å‚Æ‚é‚Æ‚¢‚¤‚Ì‚ªƒNƒ\
* Šg’£Žq‚à•Ï‚¦‚Ä‚È‚¢‚È‚çƒrƒ‹ƒh‘ÎÛ‚É‚È‚Á‚Ä“–‘R
‚Å‚¨‚µ‚Ü‚¢ —¬Î‚É•seØ‚·‚¬‚éB‰Ž‚Å‚à‚í‚©‚égit‚Æ‚©“Ç‚Þ‚Æ—Ç‚¢
TypeScriptŽg‚¤‚ÈB‰˜‚ç‚킵‚¢B
ƒoƒJ‚̓oƒJ‚炵‚PHP‚Å‚àŽg‚Á‚Ä‚ëƒSƒ~B
‰Ž‚Å‚à”»‚é‚悤‚É‘‚¢‚½‚çlŠÔ‚É”»‚ç‚È‚‚È‚è‚Ü‚µ‚½
elem.onclick = function () {
if (this.classList.contains('classA')) {
EEE
}
‚±‚ñ‚ȃR[ƒh‚ð‘‚‚ÆAVisual Studio‚ÌTypeScript‚Å
ƒGƒ‰[ TS2339 (TS) ƒvƒƒpƒeƒB 'classList' ‚ÍŒ^ 'GlobalEventHandlers' ‚É‘¶Ý‚µ‚Ü‚¹‚ñB
‚Æo‚é‚Ì‚Å‚·‚ªA¶¬‚³‚ê‚éJavaScriptƒR[ƒh(ã‚̃R[ƒh‚𓯂¶)‚Í–â‘è–³‚ŽÀso—ˆ‚éB
‚±‚ê‚͉½ŒÌ‚Å‚·‚©H
‚ ‚Ì‚³‚Ÿc‰½‚Ì‚½‚ß‚ÉTypescriptŽg‚Á‚Ä‚ñ‚Ì‚æc
this‚ðŽg‚í‚È‚¢‚©AaddEventListenerŽg‚¤
this: GlobalEventHandlers ‚Ì‚Æ‚±‚ë‚Í this: this‚¶‚Ⴞ‚ß‚È‚Ì‚©‚ÈH
ƒAƒ[ŠÖ”Žg‚¤‚Æ‚©‚»‚¤‚¢‚¤˜bH
>>126
elem‚É‚¿‚á‚ñ‚ÆŒ^(‘½•ªHTMLElementH)‚ªŽw’肳‚ê‚Ä‚ê‚΂»‚ñ‚ȃGƒ‰[o‚È‚¢‚¼ >>129
addEventListener‚Å‚à“¯‚¶‚¾‚ë addEventListener‚Í—v‘f‚²‚ƂɃVƒRƒVƒR’è‹`‚³‚ê‚Ä‚¢‚ÄAthis‚ª‚»‚Ì—v‘f‚É‚È‚Á‚Ä‚¢‚é‚Ì‚ÅOK
onclick‚Æ‚©‚ÍGlobalEventHandlers‚Åmixin“I‚É’è‹`‚³‚ê‚Ä‚¢‚ÄAthis: GlobalEventHandlers‚É‚È‚Á‚¿‚á‚Á‚Ä‚é‚Ì‚ÅNG
>>135
‚È‚é‚Ù‚ÇB‚Å‚àA‚»‚à‚»‚à
this.classList ‚Å‚Í‚È‚‚Ä
elem.classList ‚Æ‘‚¯‚΂¢‚¢‚ñ‚¶‚á‚È‚¢‚© ‚悤‚â‚Either‚ŃzƒCƒT[‚Å‚«‚éTS‚ª‚«‚½‚©
‚µ‚©‚µleftright‚ƃpƒ^ƒ}ƒ`‚ª‚È‚¢‚ƃ_ƒ‚â‚낱‚ê
‚æ‚ñ‚¾‚çA‚±‚êEither‚¶‚á‚È‚ƒzƒCƒT[‚¾‚ëEEE
ƒGƒ‰[ˆ—‹§‚Å‚«‚È‚¢Either‚Á‚ăiƒ“ƒWƒƒ[H
ƒSƒ~ƒWƒƒ[
‰F’ˆ‚É–ž‚¿‚Ä‚¢‚éŒõ‚ð“`‚¦‚é”}Ž¿A‚¾‚Á‚¯B
‹Œ–~‚És‚í‚ê‚鉫“ê‚Ì–~—x‚èA‚©‚ÈB
’ÊíAstring ‚Æ string | null ‚Í“¯“™‚È‚ñ‚ÅVSCode‚̃|ƒbƒvƒAƒbƒv‚Å‚à | null ‚ÍÈ—ª‚³‚ê‚邯‚ÇA
‚±‚ê‚ðÈ—ª‚³‚¹‚È‚¢‚Å•\Ž¦‚·‚éÝ’è‚Á‚Ä‚È‚¢‚Ì‚©‚ÈB
strictNullChecks Žg‚Á‚½‚ç‹æ•Ê‚Å‚«‚È‚‚Ä¢‚Á‚½B
’ÊíAstring ‚Æ string | null ‚Í“¯“™‚¶‚á‚È‚¢‚Å‚·
‘¼‚É¢‚Á‚Ä‚él‚ª‚¢‚È‚¢‚Á‚Ä‚±‚Æ‚Í strictNullChecks Ž©‘Ì‚ ‚Ü‚èŽg‚í‚ê‚Ä‚È‚¢‚Ì‚©‚ÈB
strictNullChecks‚ÍŽg‚Á‚Ă邯‚Ç‚»‚Ì¢‚è•û‚ª‚æ‚•ª‚©‚ç‚È‚¢‚©‚ç‹ï‘Ì“I‚É‚Ç‚¤‚¢‚¤ƒR[ƒh‚ð‘‚±‚¤‚Æ‚µ‚½Žž‚ɉ½‚ª¢‚é‚Ì‚©‹³‚¦‚Ä‚‚ê‚é‚Æ‚ ‚肪‚½‚¢
function f(): string | null {
if(Math.random() === 0) {
return null;
}
return 'abc';
}
function g(): string {
return 'abc';
}
const x = f();
const y = g();
VSCode ‚Å x ‚â f() ‚Ƀ}ƒEƒXƒ|ƒCƒ“ƒ^‚𓖂Ăă|ƒbƒvƒAƒbƒv‚ÅŒ^‚ð•\Ž¦‚µ‚Ä‚à
string | null ‚¶‚á‚È‚‚Ä string ‚Æ‚µ‚©•\Ž¦‚³‚ê‚È‚¢‚ñ‚Å‚±‚ê‚ð‹æ•Ê‚Å‚«‚é‚悤‚É‚µ‚½‚¢B
* ƒvƒƒWƒFƒNƒgƒ‹[ƒg‚Étsconfig.json‚Í‚ ‚é‚©
* tsconfig.json‚ÅstrictNullChecksˆ½‚¢‚Ístrict‚ª—LŒø‚É‚È‚Á‚Ä‚¢‚é‚©
* ‚»‚à‚»‚àVSCode‚ŃvƒƒWƒFƒNƒgƒ‹[ƒg‚ðŠJ‚¢‚Ä‚¢‚é‚©
‚È‚é‚Ù‚ÇAVSCode—p‚Ìtsconfig.json‚ð’u‚¢‚Ä‚â‚ê‚΂¢‚¢‚Á‚Ä‚±‚Æ‚©B‚ ‚肪‚Æ‚¤B
ƒrƒ‹ƒh—p‚Ìtsconfig.json‚Í•Ê‚Ìꊂɒu‚¢‚Ä‚½B
‚»‚è‚áƒvƒƒWƒFƒNƒgƒ‹[ƒg‚É–³‚¯‚è‚á‚Ç‚¤‚¢‚¤Œ´—‚Å’T‚µ‚Ä‚‚é‚ñ‚¾‚Á‚Ęb‚¾
‚¶‚á‚È‚‚ÄAVSCode‚ªtsconfig.json‚̃rƒ‹ƒhƒIƒvƒVƒ‡ƒ“‚ɇ‚킹‚Ä•\Ž¦‚ð•Ï‚¦‚Ä‚¢‚é‚Æ‚Í‘z‘œ‚µ‚Ä‚È‚©‚Á‚½B
‚»‚à‚»‚àtsc‚àtslint‚àƒvƒƒWƒFƒNƒgƒ‹[ƒg‚Ìtsconfig.json‚È‚ètslint.json‚È‚è“Ç‚Þ‚ñ‚¾‚©‚çEEEEE
Še.ts‚ɑ΂µ‚Ä‚Ç‚Ìtslint.json‚ªŽg‚í‚ê‚é‚©‚Æ‚¢‚¤”FŽ¯‚Í‚ ‚Á‚½‚¯‚ÇA
tslint‚àtsconfig‚ðŒ©‚Ä‚é‚Ì‚©B‚È‚é‚Ù‚ÇB
Œë‰ð‚𵂑‚«•û‚¾‚Á‚½‚©‚ç’ù³‚µ‚Ä‚¨‚‚¯‚Çtslint‚Ítsconfig.json“Ç‚Ü‚ñ‚æ
¡“ú‚Í emitDeclarationOnly ‚Åd.ts‚¾‚¯o—Í‚Å‚«‚邱‚Ƃ𔌩‚µ‚½
export as namespace ‚ª‰½‚ð‚Ç‚¤‚µ‚Ä‚é‚Ì‚©‚³‚Á‚Ï‚è‚í‚©‚ç‚ñ
JavaScript‚ð•×‹‚µ‚½‚±‚Æ‚ª‚È‚¢‚Ì‚ÅA¡‚©‚ç‚È‚ç‚Ç‚¤‚¹‚È‚ç‚ÆTypeScript‚Ì•û‚ðg‚ɂ‚¯‚½‚¢‚ñ‚¾‚¯‚ÇEEEE
‚±‚ê‚Á‚Ä悸JavaScript‚ªo—ˆ‚È‚¢‚±‚Æ‚É‚ÍŽÀ—p‚É‚È‚ç‚È‚¢‚ÌH
typescript ‚Í javascript ‚ÌãˆÊŒÝŠ·‚È‚Ì‚¾‚©‚çAts ‚â‚Á‚Ă邤‚¿‚É js ‚Ì‚±‚Æ‚à•×‹‚µ‚È‚¯‚ê‚΂Ȃç‚È‚‚È‚é (“Á‚ÉAes5, es2015 ‚Æ‚©‚̃L[ƒ[ƒh‚Å)
Œ¾‚¢Š·‚¦‚ê‚ÎAts ‚ð•×‹‚µ‚Ä‚ê‚Î js ‚ªo—ˆ‚é‚悤‚É‚È‚é
>>167
javascript9Š„ˆÈã{TypeScript’ljÁŽd—l‚È‚ñ‚¾‚©‚çjs‚â‚ç‚È‚¢‚È‚çŽg‚¤ˆÓ–¡‚Ë‚¦‚¾‚ë ³Šm‚É‚ÍTypeScriptŽg‚Á‚Ä‚é‚ÆJavaScript‚Ì[‚¢•”•ª‚ª‹C‚É‚È‚Á‚Ä‚«‚ÄAÅI“I‚É‚ÍŽ©‘R‚ÆJavaScript‚ð•×‹‚µŽn‚ß‚Ä‚é‚æ
‹C‚É‚¹‚¸TypeScript‚©‚çŽn‚ß‚ê‚Ηǂ¢
ts‚¾‚¯‚Å—‰ð‚Å‚«‚邱‚Æ‚ðjs‚ðŒo—R‚·‚éˆÓ–¡‚Í‚È‚¢‚µ‚Þ‚µ‚ëŒ^‚ðl—¶‚µ‚È‚¢ƒ_[ƒeƒB[‚ȉð–@‚ðŠo‚¦‚³‚¹‚ç‚ê‚邾‚¯—LŠQ
ts‚ÌAƒ‰ƒCƒuƒ‰ƒŠ‚Ì95ƒp[ˆÈオjs‚È‚ñ‚¾‚©‚ç
‚Ç‚¤‚É‚à‚È‚ç‚ñB
python‚ÌŒ^ƒAƒmƒe[ƒVƒ‡ƒ“‚ð
Š®‘S‚É•t‚¯‚é‘‚«•û‚É•ÊŒ¾Œê–¼‚‚¯‚Ä‚é‚悤‚È‚à‚ñ‚¾B
>>172
“®“IŒ^‚ÍŒ^‚ðl—¶‚µ‚È‚¢‚ÆŽv‚Á‚Ä‚ñ‚Ì‚Í‚¨‘O‚¾‚¯‚¾
JavaScript‚Ì‘S‚Ä‚Ì•Ï”‚ÉŒ^‚Í‘¶Ý‚µ‚Ä‚¢‚邵–Ú‚Ì‘O‚Ì•Ï”‚ÌŒ^‚ð’m‚炸‚ɃR[ƒfƒBƒ“ƒO‚µ‚Ä‚é“z‚È‚ñ‚Ä‚¢‚È‚¢
JavaScript‚ÍŽÀsŽž‚ÉŒ^ƒ`ƒFƒbƒN‚µ‚ÄŒ^‚̳‚µ‚³‚ð•ÛØ‚µ‚ÄA
TypeScript‚ÍŽÀs‘O‚ÉŒ^ƒ`ƒFƒbƒN‚µ‚ÄŒ^‚̳‚µ‚³‚ð•ÛØ‚·‚é‚Á‚ĈႢ‚¾‚¯‚¾ ì‚Á‚Ă鎞‚É“ª‚Ì’†‚É‚ ‚éŒ^‚È‚ñ‚©Aì‚Á‚½Œã‚ɂ͉½‚̈Ӗ¡‚à‚È‚¢‚µAŽÀsŽž‚ÉŒ^ƒ`ƒFƒbƒN‚·‚é‚È‚ñ‚Ä”nŽ‚Ì‹É‚Ý
>>175
“ª‚Ì’†w
JavaScript‚É‚Í‘S‚Ä‚Ì•Ï”‚ÉŒ^‚ª‚ ‚é‚ñ‚¾‚æ
ƒAƒ“ƒ_[ƒXƒ^ƒ“H js‚Ìbool‚ÌŒ^ƒ`ƒFƒbƒN‚̓oƒO‚ ‚邯‚Ç‚È
>>177
•ÛŽç‚·‚él‚É‚Íì‚Á‚Ä‚él‚̈Ó}‚Í‚í‚©‚ç‚È‚¢‚Á‚ĈӖ¡‚¾‚æ “®“I‚̂‚ç‚Ý‚Íruby‚Æ‚©javascript‚ÅŽUX’Ê‚Á‚Ä‚«‚Ätypescript‚És‚«’…‚‚킯‚¾‚¯‚ÇA
‚Ü‚¾‚»‚±‚ð’ʉߒ†‚Ìl‚Ƃ͘b‚ªŠš‚݇‚í‚È‚¢‚ñ‚¾‚æ‚È‚
Œ‹‹Ç‚±‚Á‚¿‚É—ˆ‚邱‚Æ‚É‚È‚é‚Ì‚É
TypeScript‚ÉUnionŒ^‚ª‚ ‚鎞“_‚ÅÅ‘“®“IŒ^‚ÆŒ¾‚Á‚Ä‚à‚¢‚¢
錾‚µ‚½‚ ‚Æ‚É—£‚ꂽꊂ̃R[ƒh‚ðŒ©‚Ä‚àAƒpƒb‚ÆŒ©‚¶‚á‚Ç‚Á‚¿‚ÌŒ^‚É‚È‚Á‚Ä‚é‚©‚Í•ª‚©‚ç‚È‚¢‚©‚ç‚Ë
>>181
typescirpt‚Á‚Ä‚»‚¤‚¢‚¤‚Æ‚±‚ë‚àƒ`ƒFƒbƒN‚µ‚Ä‚‚ê‚é‚ñ‚¾‚¼ “®“IŒ^‚ÌŒ¾ŒêAŒ‹‹Çl‹C‚ª”NX‰º—Ž‚µ‚Í‚¶‚ß‚Ä‚éB
c#‚âtypescript‚®‚ç‚¢‚ÌAŒ^‚ ‚èŠî–{‚ÅA
‚¢‚´‚Æ‚È‚Á‚½‚çA•”•ª“I–â‚í‚È‚¢‚Ì‚àA
Ž©‘R‚ÅŠÈ’P‚É‘‚¯‚éA’ö“x‚ª¡‚Í‚æ‚¢‚ÈB
>>185
Œ^‚ðˆÓŽ¯‚µ‚È‚¢A‚Æ‚¢‚¤‚Ì‚ÍŽ„‚É‚Í—L—p‚É‚Ý‚¦‚Ü‚·A‚½‚¾‚µ•Ï”錾‚Í“®“IŒ^Œ¾Œê‚É‚à•K—v‚¾‚ÆŽv‚¢‚Ü‚·‚ªA‚»‚ê‚ð•\—§‚Á‚ÄÌ—p‚µ‚Ä‚¢‚錾Œê‚Í‚ ‚è‚Ü‚·‚©‚Ëc Œ¾Œê‚Ìl‹C‚ª”NXˆÚ‚è•Ï‚í‚éA
‚Æ‚¢‚¤‚±‚Æ‚ÍA
‚¢‚‚©typescript‚àA‚Ù‚©‚ÌŒ^•t‚«A•”•ª“IŒ^•t‚«Œ¾Œê‚Ìl‹C‚àAˆÚ‚è•Ï‚í‚éA
‚Æ‚ÍAl‚¦‚È‚¢‚Ì‚©H
“®“IƒEƒ“ƒRƒKƒCƒW‚Ç‚à‚ÉŒ^‚Ì—L—p«à‚¢‚Ä‚àA“Ø‚É^Žì‚¾‚ë
ƒyƒ`ƒvƒ@‚â‚烋ƒr“Ø‚â‚çA‚ ‚¢‚‚璆‘²‚̃Kƒ`ƒQƒFƒW‚¾‚©‚ç‚È
>>188
> Œ^‚Ì—L—p«
‚¾‚©‚ç“®“IŒ^Œ¾Œê‚É‚àŒ^‚Í‚ ‚邵Œ^‚Ì—L—p«‚ð‹Žó‚µ‚Ä‚ñ‚¾‚¯‚Çc‰½“xŒ¾‚Á‚Ä‚à•ª‚©‚ç‚È‚¢“z‚Í•ª‚©‚ç‚È‚¢‚ñ‚¾‚È ‚»‚ñ‚È’N‚Å‚à‚í‚©‚Á‚Ă邱‚Æ‚Å“¾ˆÓ‚°‚É‚È‚Á‚Ä‚é‚Ì‚ª’p‚¸‚©‚µ‚¢
ˆê‡–Ú‚ÅŽR‚É“o‚Á‚½‚‚à‚è‚É‚È‚Á‚Ă銴‚¶
‚Ý‚ñ‚È‚à‚Á‚Æã‚É‚¢‚é‚©‚çI
“®“IŒ^‚ÆÓIŒ^‚Å‚ÍŒ^‚Ì–Ú“I‚ªˆá‚¤‚±‚Æ‚ð—‰ð‚µ‚Ä‚¢‚È‚¢‚炵‚¢‚È
Ì‚Í“®“IŒ^•t‚¯Œ¾Œê‚ÆÓIŒ^•t‚¯Œ¾Œê‚Á‚đ΋`Œê‚Ý‚½‚¢‚ÉŽv‚Á‚Ä‚½‚¯‚ÇA
TypeScript‚â‚Á‚Ä‚Ý‚½‚ç’Pƒ‚È“ñŒ³˜_‚¶‚á‚È‚¢‚Á‚Ä‹C•t‚©‚³‚ꂽB
‚»‚¤‘΋`Œê‚¶‚á‚È‚¢A•ª‚©‚è‚â‚·‚¢•\Œ»‚¾‚È‚Ÿ
–{“–‚ÉŒ^‚ª–³‚¢‚̂̓AƒZƒ“ƒuƒŠŒ¾Œê‚ÅA‘S‚Ä‚ª®”‚É‚È‚Á‚Ä‚Ä‚»‚ê‚ð‚Ç‚¤‰ðŽß‚·‚é‚©‚Í–{“–‚ÉlŠÔŽŸ‘悾‚©‚ç‚È
C‚Ìunion‚à‚»‚¤‚¢‚¤ˆÓ–¡‚ł͉½‚Å‚à‚ ‚è
‚»‚¤‚¢‚¤‚Ì‚ðÌ‚Ìl‚ÍuŒ^‚ ‚Á‚ÄŒ^‚È‚µv‚ÆŒ¾‚Á‚½‚Ì‚¾
“¯‚¶ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚݈—‚È‚ñ‚©‚ðRuby‚ª5s‚Å‘‚¯‚ÄAJava‚ª15s‚Æ‚©‚Å‘‚¢‚ÄA‚¢‚©‚ÉJava‚ª‘Ê–Ú‚©‚Á‚ăuƒƒO‹LŽ–‚ª‚͂ĂȃuƒbƒNƒ}[ƒN‚Æ‚©‚ł悃oƒY‚Á‚Ä‚½‚È
º‚Ì‚Å‚©‚¢l‚Í‚¢‚Â‚Å‚à‚¢‚é
‚é‚‚‚™‚È‚çˆês‚Å•`‚©‚È‚¢‚Æ•‰‚¯
Javascript‚Ìthis‚Æ‚¢‚¤‚©•Ï”ƒXƒR[ƒv‚ª–ï‰î‚ÅHaxe‚â‚Á‚Ă邯‚Ç
Typescript‚Í‚»‚Ì•Ó‚Ì–â‘è“_ˆø‚«Œp‚¢‚Å‚éH
uthis‚Æ‚¢‚¤‚©•Ï”ƒXƒR[ƒvvH
•ª‚©‚Á‚Ä‚È‚¢‚±‚Æ‚Í•ª‚©‚Á‚½B
‚¨‘O‚Í‚Ç‚ÌŒ¾Œê‚â‚Á‚Ä‚à‘嬂µ‚È‚¢B
JavaScript(JS)/TypeScript(TS) ‚Ìthis ‚ÍA‚¨‚©‚µ‚¢I
ˆê•ûAjQuery, Haxe ‚ÍA‚»‚ê‚ðC³‚µ‚Ä‚é
‚Ü‚½AJS/TS ‚Ì== ‚͊댯‚¾‚©‚çAŽg‚Á‚¿‚á‚¢‚¯‚È‚¢I
Œµ–§“™‰¿‰‰ŽZŽq=== ‚ðŽg‚¤‚ׂ«I
ˆê•ûAHaxe, Ruby ‚ÍA== ‚ÅOK
Haxe ‚É‚ÍAƒ}ƒNƒAˆø”‚‚«—ñ‹“(enum)A‘㔓Iƒf[ƒ^Œ^Aƒpƒ^[ƒ“ƒ}ƒbƒ`Aƒ}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ª‚ ‚邯‚ÇATS ‚É‚Í–³‚¢B
“Á‚ÉAswitch •¶‚Å‚ÌAenum ‚ª‹—ÍI
ˆø”‚ÌŒ^‚Å•ªŠò‚Å‚«‚é‚©‚çAƒCƒ“ƒ^ƒtƒF[ƒX‚Æ“¯“™I
‚±‚̃TƒCƒg‚ÅAƒuƒ‰ƒEƒU‚ŃvƒƒOƒ‰ƒ~ƒ“ƒO‚µ‚ÄAŽÀs‚Å‚«‚é
Try Haxe !
try.haxe.org/
HaxeƒvƒƒOƒ‰ƒ~ƒ“ƒO“ü–åA”ö–ìŽ÷A2015
Haxe ‚ÍAElixir ‚ÉŽ—‚Ä‚ËH
ƒvƒƒOƒ‰ƒ~ƒ“ƒOElixirA2016
this‚â==‚Í¡‚È‚çeslint/tslint”C‚¹‚Å‚Ù‚Æ‚ñ‚Ç–â‘è‚È‚¢‚ËB
ˆø”•t‚«enum‚͂悤‚ÍUnion Type‚¾‚µA‘㔓Iƒf[ƒ^Œ^‚ÍTagged Union Type‚©‚ÈB
ƒpƒ^[ƒ“ƒ}ƒbƒ`‚»‚Ì‚à‚Ì‚Í‚È‚¢‚¯‚ÇType Guard‚ÅŽ—‚½‚悤‚È‚±‚Æ‚ª‚Å‚«‚éB
ƒ}ƒNƒ‚ƃ}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚Í‚³‚·‚ª‚É‚È‚¢‚ÈB
haxeH‚ ‚ ts‚É•‰‚¯‚Ä–Å‚ñ‚¾Œ¾Œê‚©‚—
•¾ŽÐAƒKƒCƒW‚ª“±“ü‚µ‚½haxe‚ªŠ®‘S‚È•‰‚̈âŽY‰»‚µ‚Ä‚Ä‚¤‚ñ‚´‚è‚·‚é‚í
Ž€‚Ë‚Æ‚Ü‚Å‚ÍŽv‚í‚È‚¢‚¯‚ÇAŽY‚Ü‚ê‚Ä‚±‚È‚¯‚ê‚΂悩‚Á‚½‚Ì‚É
this‚Í‚»‚à‚»‚àŽg‚¤•K—v‚ª‚È‚¢
jQuery‚Æ‚©Ì‚̃‰ƒCƒuƒ‰ƒŠ‚ðŽg‚¤‚Æthis‚ðŽg‚í‚´‚é‚𓾂Ȃ‚È‚Á‚Ĭ—‚·‚é
•Ï”ƒXƒR[ƒv‚Ì–â‘è‚Í‘½•ª•Ï”‚ÌŠª‚«ã‚°‚ÌŽ–‚¾‚ÆŽv‚¤‚¯‚ÇATypeScript‚Í•Ï”‚ð錾‚·‚é‘O‚ɃAƒNƒZƒX‚̓Gƒ‰[‚¾‚©‚ç•Ï”ƒXƒR[ƒv‚Ì–â‘è‚Í–³‚¢
Œ¾Œê‚Ń}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚Á‚Ăǂ䂱‚ÆH
ˆê”ʂɃoƒCƒiƒŠŒÝŠ·‚Ì‚±‚ÆB
ƒXƒNƒŠƒvƒgŒ¾Œê‚̓\[ƒXƒR[ƒh=ƒoƒCƒiƒŠˆµ‚¢‚¾‚ªB
Qt‚Æ‚©‚̃‰ƒCƒuƒ‰ƒŠ‚̓\[ƒXŒÝŠ·‚â‚ËB
‚»‚̃‰ƒCƒuƒ‰ƒŠ‚Æ•W€ƒ‰ƒCƒuƒ‰ƒŠŽg‚¤•ª‚ɂ̓}ƒ‹ƒ`ƒvƒ‰ƒbƒgƒtƒH[ƒ€B
TypeScript‚̃Šƒeƒ‰ƒ‹Œ^‚ð’m‚Á‚Ä–Ú‚©‚ç—Ø‚¾‚Á‚½‚ñ‚¾‚¯‚ÇAŒ³ƒlƒ^‚Á‚Ä‚Ç‚±‚È‚Ì‚©‚ÈH
TypeScriptˆÈ‘O‚ÉÌ—p‚µ‚Ä‚¢‚½Œ¾Œê‚Æ‚©‚ ‚éH
https://www.infoq.com/jp/news/2019/03/typescript-3-3-release
Flow‚ÍC‚È‚‚Æ‚à‚±‚Ì•ªÍ‚ðŽÀŽ{‚µ‚½1”N‘O‚É‚ÍCFacebook‚É‚æ‚Á‚ċɂ߂ĕ½“I‚È•û–@‚Åi‚ß‚ç‚ê‚Ä‚¢‚½Œ¾Œê‚Å‚·B
ŠJ”‚Í‚Ü‚Á‚½‚“§‰ß“I‚Å‚Í‚È‚Cƒ[ƒhƒ}ƒbƒv‚àŒöŠJ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½B
ƒvƒƒWƒFƒNƒg‚ւ̃Rƒ“ƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚ÍCFacebookˆÈŠO‚©‚ç‚Í‚Ù‚Æ‚ñ‚Ç‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚½B
‘ÎÆ“I‚ÉTypeScript‚ÍC””N‘O‚ÉGitHub‚Ɉړ®‚µ‚ĈÈ~‚̓I[ƒvƒ“ƒ\[ƒXŠJ”‚ðÌ—p‚µ‚Ä‚¢‚Ü‚·B
ÅV‚̃[ƒhƒ}ƒbƒv‚ðŒöŠJ‚µCŠO•”‚©‚ç‚̃Rƒ“ƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚ðŽó‚¯“ü‚êC‘S”Ê“I‚ɃRƒ~ƒ…ƒjƒeƒB‚Æ‚Ì–§Ú‚ÈŠÖŒW‚ðˆÛŽ‚µ‚Ä‚¢‚Ü‚·B
FlowƒI[ƒvƒ“ƒ\[ƒX‚Í‚Ù‚Ú•ú’u‚³‚ê‚Ä‚¢‚é‚Ì‚ÅCŒ»Žž“_‚Å‚ÍTypeScript‚ÉØ‚è‘Ö‚¦‚½•û‚ª‚æ‚¢‚ÆŽv‚¢‚Ü‚·B
‚±‚̂悤‚ÈŒœ”O‚ɑ΂µ‚ÄFlowƒ`[ƒ€‚ÍCŒ»Ý‚Ìi’»ó‹µ‚Æ2019”NŒv‰æ‚ÌŒ©’¼‚µ‚É‚æ‚é‘Έ‚ðŽn‚ß‚Ä‚¢‚éB
‚±‚ÌŠT—v‚Ì’†‚ÅCFacebook‚̃\ƒtƒgƒEƒFƒAƒGƒ“ƒWƒjƒA‚Å‚ ‚éAvik ChaudhuriŽ‚ÍCFlow‚©‚çTypeScript‚ւ̈Ús‚ɂ‚¢‚ÄŽæ‚èã‚°‚Ä‚¢‚éB
@Å‹ßCFacebook‚ð‹NŒ¹‚Æ‚·‚éƒI[ƒvƒ“ƒ\[ƒXƒvƒƒWƒFƒNƒg‚Ì‘½‚‚ªCTypeScript‚ł̃Šƒ‰ƒCƒgŒv‰æ‚ð”•\‚µ‚Ä‚¢‚Ü‚·B
@Facebook‚Å‚ÍŒÂX‚̃`[ƒ€‚Ì“Æ—§«‚ð‹‚‘¸d‚µ‚Ä‚¨‚èCŠeƒ`[ƒ€‚ªƒ[ƒhƒ}ƒbƒv‚ð쬂µC
@ŠJ”’†‚̃vƒƒ_ƒNƒg‚ɑ΂µ‚ÄÅ‘åŒÀ‚Ì“w—͂𕥂Á‚Ä‚¢‚Ü‚·BTypeScript‚Ö‚ÌØ‚è‘Ö‚¦‚ðŒˆ’è‚µ‚½ƒvƒƒWƒFƒNƒg‚ÍC
@‚±‚ÌØ‚è‘Ö‚¦‚É‚æ‚Á‚ÄŠO•”ƒRƒ“ƒgƒŠƒrƒ…[ƒ^‚É‚æ‚éŽx‰‡‚ð‚æ‚葽‚Žó‚¯‚ç‚ê‚é‚悤‚É‚È‚è‚Ü‚·BŽ„‚½‚¿‚Í‚±‚ÌŒˆ’è‚ð‘¸d‚µ‚Ü‚·B export default Vue;
export as namespace Vue;
Œ^’è‹`‚ªª‚¾‚Æjs‚̃XƒNƒŠƒvƒgƒ‚[ƒh(import ‚È‚µ)‚Å«‚̂悤‚Évscode”FŽ¯‚µ‚Ä‚µ‚Ü‚Á‚Ĕ߂µ‚¢
new Vue(); @@@@@// NG
new Vue.default(); // OK
export default Vue ‚¶‚á‚È‚‚Ä export = Vue ‚È‚ç‘åä•v‚Á‚Û‚¢‚ñ‚¾‚ª
Vue‚È‚ñ‚ăSƒ~Žg‚Á‚Ä‚é‚Ì‚ªˆ«‚¢
Ž¿–â‚È‚ñ‚Å‚·‚ªA
interface TypeMap<T> {
@a: number
@b: string
@c: T
}
declare function test<T, K extends keyof TypeMap<T>>(arg: K): TypeMap<T>[K]
test("b")
test<number, "c">("c")
ª
‚±‚ê‚ðtest<number>("c")‚Á‚Ä‘‚¯‚éfunction test‚Ì’è‹`‚ÌŽd•û‚Á‚Ä‚ ‚è‚Ü‚·H
‚‚¢‚Éunion distribution‚ð—‰ð‚µ‚Ä‚µ‚Ü‚Á‚½
TS3‚ÌunknownŒ^‚¢‚¢‚ÈB
‚Ä‚©any“ü‚ꂸ‚Éʼn‚©‚炱‚ê‚É‚µ‚Æ‚¯‚âB
es‚ÌãˆÊŒÝŠ·‚Å‚ ‚éˆÈãany‚Í–³‚«‚á‚¢‚©‚ñ‚¾‚낤B
unknown‚©‚ç‚ÌŠÈ’P‚ɃLƒƒƒXƒg‚Å‚«‚é‚悤‚È’l‚΂©‚è‚È‚çAŠm‚©‚Éany‚Í‚¢‚ç‚ñ‚©‚Á‚½‚낤‚È
TS‚à’m‚ç‚ñƒtƒƒ“ƒgƒGƒ“ƒhƒGƒ“ƒWƒjƒA‚Æ‚©Ž€‚ñ‚Å‚Ù‚µ‚¢‚í
’m‚Á‚Ă邾‚¯‚ŃfƒJ‚¢Šç‚µ‚Ä‚éƒtƒƒ“ƒgƒGƒ“ƒhƒGƒ“ƒWƒjƒA‚àŽ€‚ñ‚Å—~‚µ‚¢‚í
ts’m‚Á‚Ă邾‚¯‚Å‚Å‚©‚¢–Ê‚Å‚«‚é‚Á‚Ä‚Ç‚ñ‚ÈŒ»ê‚¾‚æ
‚»‚ê‚‚ç‚¢¢ŠE‚Í‚Ü‚¾JS‚̔߂µ‚Ý‚É–ž‚¿‚Ä‚¢‚é‚Á‚Ä‚±‚Æ‚³
‹~‚Á‚Ä‚ ‚°‚悤‚æA–l‚ç‚Å
strictNullChecks‚ðture‚É‚µ‚Ä‚él‚¢‚éHH
ƒƒWƒbƒN‚Å‚Ínull‹ÖŽ~‚Å‚«‚邯‚Ç‚³A
db‚©‚çget‚µ‚½ƒf[ƒ^‚ɬ‚¶‚é‚ñ‚¾‚æ‚ËB
–¢“ü—Íó‘Ԃ̃f[ƒ^‚Á‚Ä“zB
null–o–Ń}ƒXƒ^[‚Ì•û‚ÍA‚Ç‚¤‰ðŒˆ‚µ‚Ä‚é‚ÌHH
‚»‚ê‚ÍDB‚ÌÝŒv‚ª•…‚Á‚Ă邵Aunknown | nullŒ^‚È‚ñ‚¾‚ë
ƒƒWƒbƒN‚ªŠÔˆá‚Á‚Ä‚é
‚»‚à‚»‚àAŽÀsŽž‚Énull‚âundefined‚ª¬‚¶‚é‚Æ‚¢‚¤˜b‚ÆstrictNullChecks‚É’¼Ú‚ÌŠÖŒW‚Í‚È‚¢‚¾‚ëB
‚»‚Ì’†ŠÔ‚Ì‚Ç‚±‚©‚Å¢‚Á‚Ä‚¢‚é‚ñ‚¾‚낤‚¯‚ÇA‚»‚ꂪ‚í‚©‚ç‚È‚¢‚Æ‚È‚ñ‚Æ‚àB
nullable‚Èfield‚ðget‚µ‚½‚ç‚»‚è‚ánullable‚Å‚µ‚å
Visual Studio Code ‚ÅAngular‚̕׋‚ð‚µ‚Ä‚¢‚é‚Ì‚Å‚·‚ªA
TypeScript‚Ìthis‚ª‚Ç‚±‚̃R[ƒh‚ðŽQÆ‚µ‚Ä‚¢‚é‚Ì‚©ƒCƒ}ƒCƒ`—‰ð‚Å‚«‚Ä‚¢‚Ü‚¹‚ñB
‚±‚Ìthis‚ðƒ}ƒEƒXƒI[ƒo[‚µ‚½‚çŽQÆæ‚̃R[ƒh‚ð•\Ž¦‚µ‚Ä‚‚ê‚éŠg’£‹@”\‚Í‚ ‚è‚Ü‚¹‚ñ‚©EEEH
Œ»ó‚Å‚·‚Æthis‚Ƀ}ƒEƒXƒI[ƒo[‚ð‚·‚é‚Æ this:this ‚Æ•\Ž¦‚³‚ê‚Ü‚·
AngularŽ©‘Ì•³‚¾‚©‚ç‚â‚ß‚Æ‚¯
‚Ý‚ñ‚ÈAŽ¿–âB
TS‚Á‚ÄŒöŽ®‚̃Xƒ^ƒCƒ‹ƒKƒCƒh–³‚¢‚¯‚ÇA
‚Ý‚ñ‚ȉ½Žg‚Á‚Ä‚éH
³’¼google‚Ì‚Í––”öƒJƒ“ƒ}‚ªŽó‚¯•t‚¯‚È‚¢BB
prettier‚ÅI‚í‚è
Žó‚¯•t‚¯‚È‚¢‚àƒNƒ\‚à‚È‚¢
‚¨‚Ü‚¦‚̃Xƒ^ƒCƒ‹‚Í‘S‚ăNƒ\‚ÅAprettier‚ðM‚¶‚ë
>>231
Ý’è‚ÍHH
M‚¶‚Ä‚¢‚¢prettier‚̓fƒtƒHÝ’è‚ÅOK‚È‚ÌH >>232
ƒfƒtƒH‚ÆŒ¾‚¢‚½‚¢‚ª
arrowParens: "always",
semi: false,
trailingComma: "es5",
‚Ì‚Ý•t‚¯‚é‚Ì‚ª‘½‚¢i‹C‚ª‚·‚éj semi: false,
‚¾‚¯‚Í–{“–‚É‹É‹H‚É–â‘è‚É‚È‚é‚©‚çAݒ肵‚È‚‚Ä‚à‚¢‚¢
–Úá‚肾‚©‚牴‚ÍÝ’è‚·‚邯‚Ç‚Ë
>>233, 234
‚ ‚肪‚Æ‚¤IŽŽ‚µ‚Ä‚Ý‚éI const x = { a: 'b' };
‚±‚Ì x ‚ÌŒ^‚Í { a: string } ‚É‚È‚Á‚Ä‚µ‚Ü‚¤‚Ý‚½‚¢‚¾‚¯‚ÇA { a: 'b' } Œ^‚É‚·‚é•û–@‚Á‚Ä‚È‚¢‚ñ‚Å‚µ‚½‚Á‚¯H
TypeScript 3.5‚Å‚·B
const x: { a:'b' } = { a: 'b' };
const x = { a: 'b' as 'b' }; ‚à‚¢‚¯‚é‚Ý‚½‚¢‚¾‚¯‚Çç’·‚¾‚È‚ŸB
ƒfƒtƒHƒ‹ƒg‚Å‘S•” as const ‚É‚·‚éƒIƒvƒVƒ‡ƒ“‚Æ‚©‚ ‚ê‚΂¢‚¢‚Ì‚É
any‚ð‹–‚·ƒ‹[ƒ‹‚É‚·‚é‚Á‚‚Á‚½‚ç
u‚Å‚àapi‚©‚ç‚‚é’l‚È‚ç‘S‚ÄŒ^’è‹`‚Å‚«‚Ü‚·‚æ‚ËHv
‚Á‚ÄŒ¾‚í‚ꂽ‚±‚Æ‚É‚à‚Ì‚·‚²‚¢”æ‚ꂽ
Š®àø‚Èapp‚È‚ñ‚©‚Ë[‚ñ‚¾‚æIII‚Á‚ăLƒŒ‚»‚¤‚¾‚Á‚½‚í
ˆê¶ƒCƒ“ƒ^[ƒtƒF[ƒX‘‚¢‚Ä‚ëI
unknownŠm‚©“r’†‚Å‘«‚³‚ꂽ‚æ‚ÈBʼn‚©‚ç“ü‚ê‚Æ‚¯‚¨‚à‚½B
>>247
‹–—e”h‚Å‚·B
Ä‹Aˆ—‚Æ‚©‚ð‚Ü‚Æ‚à‚ÉŒ^•t‚µ‚Ä‚½‚çAh‚·‚¬‚éBB
‚¿‚È‚Ý‚É
const arr = []
‚ÅAnever[]Œ^‚É‚È‚é‚Ì‚ª‚µ‚ñ‚Ç‚¢B
Ý’è‚Åany[]Œ^‚É‚È‚ç‚È‚¢‚Å‚µ‚傤‚©EEH –¾Ž¦“I‚ÉŒ^‚𑂯‚΂¢‚¢‚¶‚á‚ñ
‚Ä‚©ƒŠƒeƒ‰ƒ‹‚Ì [] ‚ª never[] ‚É‚È‚ñ‚©‚È‚éH
eslint ‚ª v6.0.0 ‚É‚È‚Á‚½‚ç @typescript-eslint/parser ‚ª“Ç‚Ýž‚ß‚È‚‚È‚Á‚½
‚Æ‚è‚ ‚¦‚¸ issue ‚ð‚Ý‚Ä ./node_modules/@typescript-eslint/parser/dist/parser.js ‚Å
require("eslint/lib/util/traverser")
«
require("eslint/lib/shared/traverser")
‚Å‚â‚è‰ß‚²‚µ‚Ä‚é
‚±‚ÌŒ¤‹†‚É‚æ‚é‚ÆTypeScript‚ÍÅ‚àƒoƒO”¶—¦‚ª’á‚¢Œ¾Œê‚È‚ñ‚¾‚¯‚Ç‚»‚Ì——R‚Æ‚©‘ÌŠ´‚Æ‚©‚ ‚è‚Ü‚·‚©H
https://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf
>TypeScript |1.32 (0.40)∗∗ |2.15 (0.98)∗ |1.34 (0.41)∗∗ |0.34 (0.07)∗∗∗ ƒRƒ“ƒpƒCƒ‰‚ɃoƒO‚ª–³‚¢
ƒRƒ“ƒpƒCƒ‹’†‚ɃR[ƒh‚̃oƒO‚Í”Œ©o—ˆ‚é
ƒAƒ‹ƒSƒŠƒYƒ€‚̃oƒO‚Í’m‚ç‚ñ‚ª‚È
TypeScript‚Å‘‚¢‚½ƒvƒƒ_ƒNƒg‚ɃoƒO‚ª‚È‚¢‚Ì‚©ATypeScriptƒRƒ“ƒpƒCƒ‰‚ɃoƒO‚ª‚È‚¢‚Ì‚©A‚Ç‚Á‚¿‚æH
‚ ‚Æ¡“yŠípdf‚È‚ñ‚©‚Åo‚·‚È‚æƒ{ƒPƒJƒX
“ú–{Œê–|–óŽg‚¦‚È‚¢‚¾‚낪
>>254
TS‚Å‘‚©‚ꂽƒ\ƒtƒgƒEƒFƒA‚ɃoƒO‚ª‚È‚¢
‚»‚ÌPDF‚É‚æ‚ê‚Î’²¸‘Îۂ̃ƒWƒƒ[‚È10Ží‚‚ç‚¢‚ÌŒ¾Œê‚Ì’†‚ÅÅ‚à‚È‚¢ C#‚Ƒ債‚Ä•Ï‚í‚ç‚ñ‚̂ɃoƒO‚ª‚È‚‚È‚é‚Á‚Ī‹’‚ª‚æ‚•ª‚©‚ç‚ñ
JavaScriptオ‚è‚̃vƒƒOƒ‰ƒ}‚ªŽg‚¤‚±‚Æ‚ª‘½‚¢‚©‚ç—Ç‚ŒP—û‚³‚ê‚Ä‚¢‚é‚Á‚Ä‚Ì‚ªl‚¦‚ç‚ê‚骋’‚¾‚Èw
ƒ†[ƒU‚̃Šƒeƒ‰ƒV‚ª‚‚¢‚ªŒã‰Ÿ‚µ‚µ‚Ä‚é‚Ì‚Í‚ ‚肦‚»‚¤‚¾‚È
php‚ ‚½‚è‚ÍŒ¾Œê‚àƒ†[ƒU‚àƒKƒCƒW‚¾‚©‚ç‚©‚í‚¢‚»‚¤
JavaScript‚͉SŽÒ‚ªG‚é‚É‚Íň«‚ÌŒ¾Œê‚ÆŒ¾‚Á‚Ä‚à‰ßŒ¾‚Å‚Í‚È‚¢‚È‚¢‚©‚çA‚ ‚è‚Æ‚ ‚ç‚ä‚éƒoƒO‚ðo‚µ‚Ä‘å•Ï‚È–Ú‚É‘˜‚Á‚½ƒvƒƒOƒ‰ƒ}‚ªTypeScript‚ðŽg‚¤‚±‚Æ‚É‚È‚é‚ÆAƒoƒO‚à‚È‚‚Ȃ邾‚낤‚È‚Æ‚¢‚¤ˆÓ–¡‚¾‚æ
‚‚©˜_•¶H‚Ì•\‚ÌŒ©•û‚ª‚í‚©‚ç‚ñ‚Ì‚¾‚ª
‚æ‚‚æ‚“Ç‚ñ‚¾‚çA‚Ù‚ñ‚Ƃ͈ê”ÔƒoƒO‚ª‘½‚©‚Á‚½‚Æ‚©‚¢‚¤ƒIƒ`HH
ƒXƒŒƒbƒh‚ª‚È‚¢‚Æ‚©ƒ|ƒCƒ“ƒ^‚ª‚È‚¢‚Æ‚©‚Å‚Å‚«‚È‚¢‚±‚Æ‚ª‚ ‚镪ƒoƒO‚àŒ¸‚é‚Å‚µ‚å
>>263
‚Å‚«‚È‚¢‚±‚Æ‚¾‚炯‚É‚µ‚½Go‚³‚ñ‚Í‚Ç‚¤‚È‚è‚Ü‚µ‚½‚©EEEH >>264
‚v‚…‚‚‰æ–Ê‚È‚ñ‚ĉó‚ê‚Ä‚Ä‚à‹C‚É‚µ‚È‚¢‚©‚çƒRƒ~ƒbƒgŽæ‚èÁ‚³‚È‚¢‚µ
‚»‚à‚»‚à‰æ–ÊŽÀ‘•‚Æ‚©ƒT[ƒo‚É”ä‚ׂĖâ‘è‚͈̔͂ªŒÀ’è“I‚Å‚½‚¢‚µ‚ē‚‚È‚¢‚¾‚ë
ʼn‚©‚爵‚Á‚Ä‚é–â‘肪Œ¾Œê‚²‚Æ‚É‚¿‚ª‚¤‚ñ‚¾
‚±‚Ì•\‚Á‚Ä‚©˜_•¶‚ňê‚É‚µ‚Ä‚é‚Ì‚¨‚©‚µ‚¢
‚ AŒ^‚È‚µŒ¾Œê‚Í‚ ‚©‚ñ‚ÆŽv‚¢‚Ü‚· Šm‚©‚ÉC‚Æ‚©C++‚ÍŠî‘b“I‚ȃ\ƒtƒg‚ÉŽg‚í‚ê‚é‚©‚ç
‹Í‚©‚ȃoƒO‚àâ‘΂ɋ–‚³‚ê‚È‚¢‚Æ‚±‚ ‚è‚»‚¤
‚»‚êˆÈŠO‚Ƀ|ƒCƒ“ƒ^Žg‚Á‚Ä‚é‚©‚ç‚Á‚Ä‚Ì‚à‚ ‚邾‚낤‚¯‚Ç
>>266
“®‰æ‚ÌV‚µ‚¢ƒGƒ“ƒR[ƒ_ì‚é‚Æ‚©AƒvƒƒOƒ‰ƒ€‚¶‚á‚È‚‚Ä”Šw‚̃Œƒxƒ‹‚ð‹‚ß‚ç‚ê‚éŽdŽ–‚Í’u‚¢‚Æ‚¢‚ÄA
web‚È‚çƒtƒƒ“ƒg‚Ì•û‚ª‚æ‚Á‚Û‚Ç•¡ŽG‚¶‚á‚È‚¢H
ƒoƒbƒN‚È‚ñ‚Ä“¯Šúˆ—‚Å‚¨Œˆ‚Ü‚è‚̃Œ[ƒ‹‚Éæ‚Á‚ă_ƒ‰ƒ_ƒ‰‘‚¢‚Ä‚‚¾‚¯‚¾‚µB
•¡ŽG‚ŃpƒtƒH[ƒ}ƒ“ƒX‚ª—v‹‚³‚ê‚épwa‚Æ‚©Atypescript–³‚©‚Á‚½‚çâ‘΂Ɋ®¬‚·‚é‹C‚µ‚È‚¢‚íB
ƒJƒIƒX‰ß‚¬‚é js/ts‚¾‚¯‚ǃ_ƒCƒAƒƒO‚Æ‚©o‚·‚Æ‚«‚É
ƒ‚[ƒhƒŒƒX‚É‚µ‚½•û‚ªƒ†[ƒU[‚É‚ÍŽg‚¢ˆÕ‚¢‚Ì‚É
ƒoƒO‚ª‘‚¦‚»‚¤‚¾‚©‚烂[ƒhƒŒƒX‹ÖŽ~‚Á‚Ä‚±‚Æ‚Å
‘S•”ƒ‚[ƒ_ƒ‹‚Å‘¢‚炳‚ꂽ‚±‚Æ‚ª‚ ‚é
Œ^‚Ì”»’è‚̳‚µ‚¢Žè‡‚Á‚Ä‚Ç‚¤‚¾‚Á‚¯H5s–ڂňø‚Á‚©‚©‚Á‚Ä‚µ‚Ü‚¤B
function isMyType(o: unknown): o is MyType {
if (typeof o !== 'object') { return false; }
if (!o) { return false; }
if (!('key' in o)) { return false; }
if (!o.key) { return false; } // ts7053
return true;
}
‚Ђ¦‚Ác
typescriptŽg‚¤ˆÓ–¡‚ ‚é‚Ì‚±‚ê
‚»‚è‚áTypeScript‚¾‚Á‚Ä–‚–@‚¶‚á‚È‚¢‚ñ‚¾‚©‚çB
‚·‚²‚¢‚Ì‚ÍŠO•”‚©‚ç“n‚³‚ꂽ“¾‘Ì‚Ì’m‚ê‚È‚¢’l‚ð‚±‚¤‚â‚Á‚Ä“®“I‚ÉŒ^”»’肵‚Ä
‚»‚ê‚ðÓI‚ÈŒ^‚Ì¢ŠE‚ÉŽ‚¿ž‚ß‚é‚Æ‚±‚ëB
ts’m‚ç‚È‚¢‚¯‚Lj—Œn‚ªƒ[ƒhÏ‚Ý‚ÌŒ^ˆê——‚ðŽæ“¾‚Å‚«‚È‚¢‚Ì
unknown‚¶‚á‚È‚‚Äany‚Å‚¢‚¢‚Å‚µ‚å
>>270
‚±‚Ì•Ô‚è’lA‚È‚ñ‚Ä‚¢‚¤‹L–@H
‚Æ‚¢‚¤‚©A‚È‚º‚±‚ñ‚È‘‚«•û‚ª•K—v‚È‚ÌH user defined type guard function ‚ŃOƒO‚êB
>>269
jQuery, jQuery UI ‚̃_ƒCƒAƒƒO‚ðŽg‚¦‚ÎH
ƒ‚[ƒ_ƒ‹‚ª‘½‚¢‚悤‚È‹C‚ª‚·‚é >>276
‚»‚ꂾ‚¯‚Å—‰ð‚µ‚½
‚È‚éƒTƒ“ƒNƒX /* eslint-disable @typescript-eslint/explicit-function-return-type */
const mapDispatchToProps = (dispatch: TodoAsyncDispatch) => {
return {
fetchTodo: (id: TodoId) =>
dispatch(todoAsyncRequestActions.fetchTodoRequest({ id })),
}
}
/* eslint-enable */
type ReduxDispatchProps = ReturnType<typeof mapDispatchToProps>
---
‚±‚ê‚ðeslint-disable‚È‚µ‚ÅŽÀ‘•‚·‚é•û–@‚Á‚Ä‚È‚¢‚Å‚·‚©H
—Ⴆ‚ÎA«‚±‚ñ‚ÈŠ´‚¶‚Åuanyv‚Ì•”•ª‚ªuŒ^„˜_‚³‚¹‚éŒ^v‚Ý‚½‚¢‚É‚Å‚«‚éA‚Æ‚©B
redux-thunk‚ÌŒ^•t‚¯‚ª“‚¢‚¨EEE
---
type MDTP = (dispatch: TodoAsyncDispatch) => any
const mapDispatchToProps2: MDTP = (dispatch) => {
return {
fetchTodo: (id: TodoId) =>
dispatch(todoAsyncRequestActions.fetchTodoRequest({ id })),
}
}
type ReduxDispatchProps2 = ReturnType<typeof mapDispatchToProps2>
‚»‚̈Öق̄˜_‚ð‹ÖŽ~‚·‚郋[ƒ‹‚È‚ñ‚¾‚©‚ç•’Ê‚Él‚¦‚½‚ç–³‚¢‚æ‚ËB
Œ^•t‚¯‚ª“‚¢ê‡‚ª‚ ‚é‚Ì‚Í‚í‚©‚邯‚ÇAeslint-disable‚¶‚Ⴞ‚ß‚È——R‚ÍH
‘S‘Ì‚Æ‚µ‚Ä“ü‚ê‚Ä‚¢‚éƒ`ƒFƒbƒN‚Ì—áŠO‚ðÝ‚¯‚é‚È‚çŒã‚©‚ç‚»‚̉ӊ‚ª‚í‚©‚é‚悤‚É
‚µ‚Ä‚¨‚©‚È‚«‚ᢂé‚ÆŽv‚¤‚ªB
>>280
Œ^•t‚¯Ž©‘Ì‚Í‚»‚¤“‚‚Í‚È‚¢‚ñ‚¾‚ªA‚±‚Ì2d’è‹`Š´‚ª‚¾‚é‚‚ÄB
mapDispatchToProps‚ÉŒ^‚¿‚á‚ñ‚Æ‘‚¢‚Ä‚»‚±‚ÉW–ñ‚µ‚½‚¢‚Æ‚¢‚¤‚©B
---
type ReduxDispatchProps = {
fetchTodo: (id: TodoId) => Promise<void>
}
const mapDispatchToProps = (
dispatch: TodoAsyncDispatch
): ReduxDispatchProps => {
return {
fetchTodo: (id) =>
dispatch(todoAsyncRequestActions.fetchTodoRequest({ id })),
}
}
---
> eslint-disable‚¶‚Ⴞ‚ß‚È——R
mapDispatchToProps ‚Í‘‚•p“x‚ª‚‚¢‚©‚çA‚ ‚Ü‚è eslint-disable ‚ðŽT‚«ŽU‚炵‚½‚‚È‚¢
‚Æ‚Í‚¢‚¦•’Ê‚Ì function ‚Å explicit-function-return-type ‚ð false ‚É‚µ‚½‚‚È‚¢
‚Æ‚¢‚¤‚¨‹CŽ‚¿
‚â‚Á‚Ï–³—ƒbƒX‚©‚Ë >>281
‚Ç‚¤‘‚¯‚΂ł«‚»‚¤‚Å‚·‚©H { allowExpressions: true }
>>284
Šù‚É‚±‚ê‚Åݒ肵‚Ä‚Ü‚·
---
"@typescript-eslint/explicit-function-return-type": [
"error",
{
allowExpressions: true,
allowTypedFunctionExpressions: true,
},
],
--- Nest.jsŽg‚Á‚ăT[ƒoƒTƒCƒh‚àtsŽg‚Á‚Ä‚él‚¢‚éH
‚Þ‚µ‚뮇«‚ª‹‚ß‚ç‚ê‚éƒT[ƒo[ƒTƒCƒh‚Å‚±‚»Šˆ–ô‚·‚é
tslint‚ª”N“àŽû‘©‚Á‚Ä‚±‚Æ‚È‚ñ‚ÅeslintˆÚs‚ðŽŽ‚µ‚Ä‚¢‚邪A‚Ü‚¾”÷–‚ÉŽg‚¢‚Â炢‚ÈB
Svelte ŽŽ‚µ‚Ä‚é‚ñ‚¾‚ª TS ‚É‚Å‚«‚È‚¢cc
eslint-config-prettier‚ª‚Ù‚ÚŽg—p•s‰Â‚É‚È‚é‚Ì‚à‚µ‚ñ‚Ç‚¢
vs2019‚É“ü‚ê‚é‚Æ‚«‚Í‚Ç‚¤‚µ‚½‚ç‚¢‚¢‚Å‚·‚©H
FX‚â‚Á‚Ä‚ÄA2017‚É‚Í“ü‚Á‚½‚¯‚ÇAHelloWorld‚ª³‚µ‚“®‚¢‚Ä‚‚ê‚È‚¢B
ˆ«‚¢‚±‚Æ‚ÍŒ¾‚í‚ñ‚©‚çVSCode‚É‚µ‚Æ‚¯
‚»‚ê‚ÉTypeScript‚ÍIDE‚ɃCƒ“ƒXƒg[ƒ‹‚·‚é‚à‚ñ‚¶‚á‚È‚Anpm‚ŃCƒ“ƒXƒg[ƒ‹‚·‚邽‚¾‚Ì1ƒ‰ƒCƒuƒ‰ƒŠ‚¾
ŒŸ“¢‚µ‚Ä‚Ý‚Ü‚·B
‚ ‚肪‚Æ‚¤B
ƒŠƒeƒ‰ƒ‹Œ^‚©‚ç‚»‚̃Šƒeƒ‰ƒ‹‚Ì’l‚ðì‚邱‚Æ‚Á‚Ä‚Å‚«‚È‚¢‚ñ‚¾‚Á‚¯‚©B
Record<Foo,boolean>‚Ì•Ï”‚̉Šú’l‚ÉReacord<Foo,false>‚Ì’l‚ªŽg‚¦‚½‚ç‚æ‚©‚Á‚½‚ñ‚¾‚ªB
Œ^î•ñ‚©‚çŽÀsŽžƒCƒ“ƒXƒ^ƒ“ƒX‚Ì’l‚ð•ÏX‚Í•s‰Â”\
Žd‘g‚Ýl‚¦‚è‚á“–‚½‚è‘O‚¾‚æ‚È
ts‚̓Rƒ“ƒpƒCƒ‹Œã‚ÌŒ‹‰Ê‚ÉŒ^î•ñ‚ÍŠÜ‚Ü‚È‚¢‚Æ‚¢‚¤ƒ|ƒŠƒV[‚¾‚¯‚ÇA
‚»‚¤‚¢‚¤’蔂𖄂ߞ‚Þ‚±‚Æ‚Í‚â‚낤‚ÆŽv‚¦‚΂ł«‚é˜b‚¾‚ëB
android‚ÅŽg‚¦‚éts—p‚Ìeditor‚È‚¢‚©‚È
ƒgƒ‰ƒ“ƒXƒpƒCƒ‹‚Æ‚©‚̓ƒCƒ“‚̊‹«‚Å‚â‚é‚©‚çƒR[ƒfƒBƒ“ƒO‚Ì‚½‚ß‚Ì“ü—ÍŽx‰‡‚¾‚¯‚Å‚àŽó‚¯‚ç‚ê‚é‚悤‚È‚â‚Â
tslint‚Ì"max-classes-per-file"‚̃fƒtƒHƒ‹ƒg’l‚ª‚P‚È‚ñ‚¾‚¯‚Ç‚±‚ê‚Ç‚¤‚¢‚¤ˆÓ–¡‡‚¢‚ª‚ ‚Á‚Ä‚±‚ñ‚ȧŒÀ‚ª‚©‚©‚Á‚Ä‚é‚ÌH
Best practice is to keep each file limited to a single responsibility.
ƒvƒƒWƒFƒNƒg‚Ì‹K–Í‚ª‘å‚«‚‚È‚Á‚Ä‚à1ƒtƒ@ƒCƒ‹1class‚Á‚Ĉێ‚Å‚«‚é‚à‚Ì‚È‚Ì‚©H
tsƒtƒ@ƒCƒ‹‚É
stringŒ^‚Ìnormalize('NFC')‚ð
Žg‚¨‚¤‚Æ‚µ‚½‚ñ‚¾‚¯‚ÇAƒGƒ‰[‚É‚È‚éB
‚È‚ñ‚ÅH
ƒvƒƒWƒFƒNƒg‚ª‘å‚«‚‚Ȃ邱‚ƂƂЂƂ‚̃tƒ@ƒCƒ‹‚É‘‚ƒNƒ‰ƒX‚Ì”‚ª‘‚¦‚邱‚Æ‚Æ‚ªŒ‹‚т‚©‚È‚¢‚ñ‚¾‚ª
ƒoƒYƒ[ƒh‚É—x‚炳‚ê‚Ă邾‚¯‚È‚Ì‚©AƒcƒbƒRƒ~‚Ç‚±‚ë‚Ä‚ñ‚±·‚è‚È‚Ì‚Í’u‚¢‚Ä‚¨‚¢‚ÄEEE
Geekly Media ƒ‰ƒCƒ^[
ƒoƒXƒR
ÅV‚Ì‹LŽ–‚ªXAMPP‚Å‘¶‚¦‚½
10”N‘O‚©‚çƒ^ƒCƒ€ƒXƒŠƒbƒv‚µ‚Ä‚«‚½‚Ì‚©H
>>307
>TypeScript‚̓Nƒ‰ƒXƒx[ƒXƒIƒuƒWƒFƒNƒgŽwŒü‚Å‚·B
Š®‘S‚ɇ‚Á‚Ä‚¢‚邪c‰½‚ª–â‘è‚È‚ñ‚¾H TypeScript‚̓Nƒ‰ƒXƒx[ƒX‚ÅJavaScript‚̓vƒƒgƒ^ƒCƒvƒx[ƒX‚Á‚đΔ䂵‚Ä‚¢‚é‚Ì‚ÍŠ®‘S‚É‚¨‚©‚µ‚¢
ƒNƒ‰ƒX\•¶‚Í‚½‚¾‚Ì“œˆß\•¶‚ÅŽÀ‘Ԃ̓vƒƒgƒ^ƒCƒvƒx[ƒX‚¾‚µA‚»‚à‚»‚àƒNƒ‰ƒX\•¶‚ÍES2015‚É‚ ‚é‚ñ‚¾‚©‚çJavaScript‚àƒNƒ‰ƒXƒx[ƒX‚Æ‚¢‚¤˜b‚É‚È‚Á‚Ä‚µ‚Ü‚¤
Haskell‚ÍÅI“I‚ÉÄ‘ã“ü‚µ‚Ü‚‚è‚ÌC‚É•ÏŠ·‚³‚ê‚é(o—ˆ‚é)‚¯‚ÇAHaskell‚̓ˆ‚ÈŠÖ”Œ^Œ¾Œê‚ÆŒ¾‚í‚ê‚Ä‚¢‚é
ƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚Ì—l‚É‘‚¯‚Ä‚»‚Ì’Ê‚è‚É“®‚¯‚ÎAƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚ÆŒ¾‚¦‚é
TypeScript‚ªŒ¾ŒêŽd—l‚ð‘S‚•Ï‚¦‚¸‚ÉWebAssembly‚ɃRƒ“ƒpƒCƒ‹‚³‚ê‚é‚悤‚É‚È‚Á‚Ä‚àATypeScript‚̓vƒƒgƒ^ƒCƒvƒx[ƒX‚ÆŒ¾‚¢’£‚é‚Ì‚©H
ƒIƒuƒWƒFƒNƒgŽwŒü“I‚ÈŒ¾Œê‹@”\‚ÉŠÖ‚µ‚ÄŒ¾‚¦‚ÎTypeScript‚ÍJavaScript‚Ɖ½‚ç•Ï‚í‚è‚Í‚È‚¢‚ñ‚¾‚©‚ç
‚»‚ÌHaskell‚Ì—á‚ÍŽv‚¢‚Á‚«‚è“IŠO‚ê‚Æ‚¢‚¤‚©Œ¡‹•t‰ï‚Æ‚¢‚¤‚©B
>TypeScript‚ªŒ¾ŒêŽd—l‚ð‘S‚•Ï‚¦‚¸‚ÉWebAssembly‚ɃRƒ“ƒpƒCƒ‹‚³‚ê‚é‚悤‚É‚È‚Á‚Ä‚àATypeScript‚̓vƒƒgƒ^ƒCƒvƒx[ƒX‚ÆŒ¾‚¢’£‚é‚Ì‚©H
ƒvƒƒgƒ^ƒCƒv‚ª“®ì‚µ‚È‚‚È‚é‚È‚ç•Ê‚¾‚ªAŽd—l‚ð‚Ü‚Á‚½‚•Ï‚¦‚È‚¢‚Æ‚¢‚¤‘O’ñ‚Ȃ牽‚à•Ï‚í‚ç‚ñ‚¾‚ëB
‚Æ‚±‚ë‚ÅA‚±‚ñ‚È‚±‚ÆŒ¾‚¢’£‚Á‚Ä‚¢‚½“z‚È‚ñ‚ÄŒ©“–‚½‚ç‚È‚¢‚ªA
>TypeScript‚̓vƒƒgƒ^ƒCƒvƒx[ƒX
‚à‚µ‚©‚µ‚ăNƒ‰ƒXƒx[ƒX‚ð”ے肵‚½‚çƒvƒƒgƒ^ƒCƒvƒx[ƒX‚ðŽå’£‚µ‚Ä‚¢‚邱‚Æ‚É‚³‚ê‚¿‚Ⴄ‚ñ‚¾‚낤‚©B
TypeScript‚Íprototype‚ð‚¢‚¶‚‚é‚悤‚ȃR[ƒfƒBƒ“ƒO‚Í„§‚µ‚Ä‚È‚¢‚¾‚ë
Œ^ƒVƒXƒeƒ€‚ª”j’]‚·‚é
‚»‚ÌŽž“_‚Ńvƒƒgƒ^ƒCƒv‚Æ‚ÍŠÖŒW–³‚¢’P‚È‚éƒIƒuƒWƒFƒNƒgŽwŒüŒ¾Œê‚È‚ñ‚¾‚æ
ÅI“I‚É‚Ç‚¤“®‚¢‚Ä‚é‚©‰½‚ÄŠÖŒW–³‚¢
Haskell‚Ì—l‚É‚Ë
‚¢‚â‚È‚ñ‚Å‚»‚ñ‚È•KŽ€‚É‚»‚Ì•³ƒKƒCƒW‹LŽ–‚ð—iŒì‚µ‚½‚ª‚é‚Ì‚©‚í‚©‚ç‚ñ
ƒoƒXƒR–{l‚©H
‚¿‚á‚ñ‚Æ“ª‚Ì‚¨–òˆù‚ß‚æ
’m‚ç‚È‚©‚Á‚½‚ªAAssemblyScript‚È‚ñ‚Ä‚ ‚Á‚½‚Ì‚©B
Šù‘¶‚ÌTypeScript‚̃R[ƒh‚ª‚»‚̂܂܃Rƒ“ƒpƒCƒ‹‚Å‚«‚é‚킯‚¶‚á‚È‚‚Ä
•¶–@‚¾‚¯‚ª‹¤’Ê‚Ì•ÊŒ¾Œê‚Á‚ÄŠ´‚¶‚¾‚ªB
ES5ˆÈ‘O‚Í‚Æ‚à‚©‚A¡‚ÍPrototype‚ðˆÓŽ¯‚·‚邱‚Æ‚Í‘S‘R‚È‚¢‚È
‚¸‚Á‚ÆJava‚Æ‚©PHP‚¾‚Á‚½l‚Å‚àˆá˜aŠ´‚È‚Žn‚ß‚ç‚ê‚é‚ÆŽv‚¤
‚Å‚Ü‚½‚Ü‚É‚¤‚ñ‚±‚ªŠç‚ðo‚·
3.7‚Í‚È‚©‚È‚©Šy‚µ‚Ý‚È‹@”\‚ª·‚肾‚‚³‚ñ
asserts ‚¦‚¦‚È
pipelineƒIƒy‚ ‚‚µ‚ë‚æ
>>323
‚·‚Å‚ÉTS‚ÍNullˆÀ‘S‚È‚ñ‚Å‚·‚ª‚»‚ê‚Í >>326
Recursive Type References
‚±‚ñ‚È‚ño—ˆ‚é‚Ì‚©H
Ä‹A‚Íany‚Å“¦‚°‚Ä‚½‚íB >>330
‚¢‚âA•K—v‚Ȃ̂̓pƒbƒ`‚¶‚á‚È‚‚ÄA–¾Ž¦“I‚Èdeprecated‚¾‚ëB
MS‚Í‘S‚Ä‚ÌŠ¯Œö’¡‚ɑ΂µ‚ÄAblink‚̃uƒ‰ƒEƒU[‚ð‹§‚³‚¹‚é‚ׂ«B
ƒSƒ~Ž¡‰Æ‚¶‚á–³—‚È‚Ì‚ÅAMS‚ª‚â‚êB
•‘D‘ãs—¿‚Æ‚µ‚Ä10’›•¥‚Á‚Ä‚àÉ‚µ‚‚È‚¢B Object ‚Ì OR ‚ðŽ©“®”»•Ê‚Á‚Ä‚Å‚«‚È‚¢‚Ì‚©‚ÈH
‰º‚ÌURL‚ÍATypeScript Playground‚Å‘‚¢‚Ä‚Ý‚½‚à‚Ì
‹K§‚Å‘‚«ž‚ß‚È‚©‚Á‚½‚©‚çA‚¨Žè”‚¾‚ª concat ‚µ‚ÄŠJ‚¢‚Ä‚Ù‚µ‚¢
https://
bit.ly
/30Pw8K3 ‚»‚¤‚¢‚¤‚Ì‚ÍA{ type: 'Succeeded'; result: string }‚Æ{ type: 'Failed'; message: string } ‚Ý‚½‚¢‚É‚µ‚ÄAtype‚Å•ªŠò‚³‚¹‚é‚Ì‚ª•’Ê‚¾‚¯‚ÇA
if ('result' in resp) {} ‚Å‚à‚¢‚¯‚é‚æ
typescript‚ÌŒ^‚Í‚½‚¾‚Ì\‘¢‚Å‚µ‚©‚È‚¢‚±‚Æ‚ª‚í‚©‚ê‚Η‰ð‚Å‚«‚é‚ÆŽv‚¤
>>333
‚¤‚¨‚¨A‚Å‚«‚½A‚ ‚肪‚Æ‚¤AŠ´“®AŠ´ŽÓAŠ®àø‚Å‚· tsconfig.json‚Ń\[ƒXƒfƒBƒŒƒNƒgƒŠ‚ÌŽw’è‚Í
"include": [
"src/**/*"
]
‚Æ "compilerOptions":{
""rootDir": "./src",
‚Ì‚Ç‚Á‚¿‚ª³‚µ‚¢‚Ì‚Å‚·‚©H
ƒRƒ“ƒpƒCƒ‹‚Å‚«‚é•û
ƒ}ƒWƒŒƒX‚·‚é‚Æã
rootDir ‚Á‚Ä—v‚ç‚È‚‚ËH
‚à‚¤eslint‚ɈÚs‚µ‚Ä‚à‘åä•v‚©‚ÈH
‚à‚¤3ƒ–ŒŽ‘O‚‚ç‚¢‚É–{”Ô‚ÅeslintˆÚs‚µ‚½‚ªA‘S‚–â‘è‚È‚‚ărƒr‚邼
@( @ß„tß)
Q(__‚Â/PPP/Q
@@_/@@@@/
‚«‚½‚©cII
@@( ß„tß )@¶ÞÀ¯
@@.r@@ S
Q_l_l@/PPP/Q
@@_/@@@@/
@@( ß„tß )@½¯
Q(__‚Â/PPP/Q@
@@_/@@@@/@
>‚³‚ç‚ÉSTS‚ÍATypeScript‚ÌŒ^‹K‘¥‚©‚ç‚àˆí’E‚µ‚Ä‚¢‚éBTypeScript‚ªƒNƒ‰ƒX‚É\‘¢“IŒ^•t‚¯(structural typing)‚ð
>Žg—p‚·‚é‚̂ɑ΂µ‚ÄAStatic TypeScript‚Å‚Í–¼‘O“IŒ^•t‚¯(nominal typing)‚ðŽg—p‚µ‚Ä‚¢‚é‚Ì‚¾B
TypeScript‚Ìl‹C‚É‚ ‚â‚©‚Á‚½•ÊŒ¾Œê‚¶‚á‚ËH
Œ‹‹Ç‚½‚¾‚ÌCŒ¾Œê‚̈ŸŽí‚¾‚ë
MS‚à‚»‚ñ‚ÈŽ–‚ð‚¢‚¿‚¢‚¿ƒAƒs[ƒ‹‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‚Ù‚Ç—Ž‚¿‚Ԃꂽ‚©c
TypeScript‚ÍJSer‚Ö‚Ì‹§Œ^•t‚¯ƒMƒvƒX‚¾‚ÆŽv‚¦‚΂»‚±‚»‚±—DG
‚¢‚‚܂łàƒMƒvƒX‚‚¯‚½ó‘Ô‚Å–ž‘«‚·‚é‚à‚Ì‚Å‚Í‚È‚¢‚Ì‚Å‚»‚Ì‚¤‚¿Rust‚È‚è•Ê‚ÌÓIŒ^•t‚¯‚ɈÚs‚·‚é‘O’ñ‚Å‚ ‚ê‚ÎÜŽ^‚Å‚«‚é
TypeScript‚̓^ƒCƒv”]‚Ö‚Ì‹§•â•—Ö‚¾‚ÆŽv‚¦‚΂»‚±‚»‚±—DG
‚¢‚‚܂łà•â•—ւ‚¯‚½ó‘Ô‚Å–ž‘«‚·‚é‚à‚Ì‚Å‚Í‚È‚¢‚Ì‚Å
‚»‚Ì‚¤‚¿¶JS‚È‚è•Ê‚Ì“®“IŒ^•t‚¯‚ɈÚs‚·‚é‘O’ñ‚Å‚ ‚ê‚ÎÜŽ^‚Å‚«‚é
TypeScript‚̓^ƒCƒv”]‚Ö‚Ì‹§•â•—Ö‚¾‚ÆŽv‚¦
‚΂»‚±‚»‚±—DG‚¢‚‚܂łà•â•—ւ‚¯‚½ó‘Ô‚Å–ž‘«‚·‚é‚à‚Ì‚Å‚Í‚È‚¢‚Ì‚Å‚»‚Ì‚¤‚¿¶JS‚È‚è•Ê‚Ì“®“I
Œ^•t‚¯‚ɈÚs‚·‚é‘O’ñ‚Å‚ ‚ê‚ÎÜŽ^‚Å‚«‚é
Œ^–³‚µ•³Œ¾Œê‚ÍŽ€‚Ë‚¾‚ÆŽv‚¦
“®“I•³Œ¾Œê‚Í‚¢‚Â‚Ü‚Å‚à•³‚Å‚»‚Ì‚¤‚¿•³
•³•³•³
‚·‚Ý‚Ü‚¹‚ñ
¡‚Ü‚ÅES5.1‚ðŽg‚Á‚Ä—ˆ‚ÄA‚±‚ê‚©‚爵‚¢ˆÕ‚¢‚ÆŒ¾‚í‚ê‚é
TypeScript‚ðŠwK‚µ‚悤‚ÆŽv‚¤‚Ì‚Å‚·‚ª
‹t‚ÉTypeScript‚Ì•û‚ªJavaScript‚æ‚è
“ïˆÕ“x‚‚¢‚ÆŒ¾‚¤Ž–‚Í‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚傤‚©B
Œ^‚Í’l‚É•t‚•¨‚Å•Ï”‚Í‚»‚ê‚Ö‚ÌŽQÆA
prototype‚̓tƒ@ƒ“ƒNƒVƒ‡ƒ“‚Ö‚ÌŽQÆŠi”[—pƒvƒƒpƒeƒB
Object‚͉‘Y«‚Ì‚ ‚é•Ö—˜‚ȉ½‚©‚Æ‚¢‚¤Š´Šo‚ªg‚ɂ‚¢‚Ä‚¢‚Ü‚·B
vscode‚Æ‚¢‚Á‚µ‚å‚ÉŽg‚¦‚ÎAjs‚æ‚èŠy
Œ^ƒGƒ‰[‚Í‘S‚ÄTS‚ª‹³‚¦‚Ä‚‚ê‚é
>>350
Œ^‚Í’l‚É•t‚‚Æ‚¢‚¤‚»‚ÌŠ´Šo‚Í‚»‚Ì‚Ü‚Ü‚Å‚¢‚¢‚æBTypeScript‚Í‚»‚ê‚ɉÁ‚¦‚Ä
- ‚»‚ꂼ‚ê‚Ì•Ï”‚É‚Ç‚ñ‚ÈŒ^‚Ì’l‚ª“ü‚é‚©ƒRƒ“ƒpƒCƒ‰‚ª’²‚ׂĂ‚ê‚é
- ‚»‚ꂼ‚ê‚Ì•Ï”‚É‚Ç‚ñ‚ÈŒ^‚Ì’l‚ª“ü‚Á‚Ä‚Ù‚µ‚¢‚©ƒvƒƒOƒ‰ƒ}‚ªŽw’è‚Å‚«‚é
- ‚»‚Ì—¼ŽÒ‚ÉH‚¢ˆá‚¢‚ª‚È‚¢‚©‚Ç‚¤‚©ƒRƒ“ƒpƒCƒ‰‚ªƒ`ƒFƒbƒN‚·‚é
‚Æ‚¢‚¤‚¾‚¯B TS‚Ì‹@”\‚ð—]‚·Ž–‚È‚Žg‚¨‚¤‚ÆŽv‚¤‚Æ“ïˆÕ“x‚‚¢‚¯‚Ç
‘´ˆ‚ð–ÚŽw‚·•K—v‚Í‚È‚¢
‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B
‚Æ‚è‚ ‚¦‚¸ tslint ‚ðŠÉ‚ß‚É‚µ‚Ä‚â‚Á‚Ä‚Ý‚Ü‚·B
TS‰SŽÒ‚Å‚·‚ª‚¨Š©‚߂̑Ђ ‚è‚Ü‚¹‚ñ‚©Hwebpack‚Æ‚©‚à‡‚í‚¹‚ĕ׋‚µ‚½‚¢‚Å‚·B
interface A {
x: string;
}
a: A;
A.x‚ÌŒ^(string)‚ðŽæ‚èo‚µ‚½‚¢ê‡ typeof A.x ‚¶‚áƒ_ƒ‚Å typeof a.x ‚È‚ç‚¢‚¯‚½‚¯‚ÇA
a‚Ý‚½‚¢‚È•Ï”‚ðŽg‚킸‚É typeof A.x ‘Š“–‚Ì‚±‚Æ‚Á‚Ä‚Å‚«‚È‚¢‚ñ‚¾‚Á‚¯H
‚È‚é‚Ù‚ÇBƒuƒ‰ƒPƒbƒg‹L–@‚Á‚ÄÅ‹ß‚Æ‚ñ‚ÆŽg‚í‚È‚‚È‚Á‚½‚¯‚ÇA‚±‚ñ‚È‚Æ‚±‚ë‚ÉŽg‚¢“¹Žc‚Á‚Ä‚½‚ñ‚¾B
ŽÀ‘HTypeScript - BFF‚ÆNext.js&Nuxt.js‚ÌŒ^’è‹`A‹gˆä Œ’•¶A2019/6/26
¡‚Ü‚ÅATS ‚Ì–{‚ÍA‚ ‚Ü‚è–³‚©‚Á‚½‚Ì‚Å”ƒ‚Á‚Ä‚Ý‚½
“ü–åŽÒ—p‚Ì•¶–@‚Ìà–¾‚ªA130ƒy[ƒW‚µ‚©‚È‚¢B
Žc‚è‚Ì190ƒy[ƒW‚ªAŠeƒtƒŒ[ƒ€ƒ[ƒN‚ւ̑Ήž
–{‰®‚ÅA‘¼‚Ì–{‚ðŒ©‚½‚çA
¶“c’Öë”T‚ÍANode.js, Vue.js, React, Angular ‚Ì–{‚ðo‚µ‚Ä‚éw
ŽR“cËŠ°‚àAVue.js‚Ì–{‚ðo‚µ‚½
vue‚ͪ–{‚©‚çŒ^‚ª•…‚Á‚Ä‚é‚©‚çŽg‚¤•K—v‚È‚µ
“ú–{l‚Í”nŽ‚¾‚©‚炵‚傤‚ª‚È‚¢B
¢ŠE“I‚É‚Íreact‚È‚Ì‚ÉA¢ŠE‚Æ“¯‚¶‚à‚Ì‚Å‚Í킦‚È‚¢‚©‚ç‚È‚Ì‚©A“ú–{‚Å‚Ívue‚ðŽg‚¨‚¤‚Æ‚·‚é
‹Lq‚ªƒXƒQ[’·‚‚È‚Á‚ÄŒ©‚Â炢
‚±‚ê‚Á‚Ä—ò‰»java‚Ý‚½‚¢‚È‹Lq‚É‚È‚ç‚È‚¢H
js‚Ì—Ç‚³‚ªŠ®‘S‚ÉŽ€–S‚µ‚Ä‚é‹C‚ªc
ŽÀ‘HTypeScript ‚ð“Ç‚ñ‚ł邯‚ÇATS ‚Ìׂ©‚¢‹““®‚̉ö‚µ‚¢Š‚ª‘½‚¢‚©‚çA
‚»‚Ì—áŠO“I‚ȃ‹[ƒ‹‚Ì”‚ðŠo‚¦‚é‚Ì‚ª‘å•ÏB
‚‚܂èAƒnƒ}‚é‰ÓŠ‚ð”ð‚¯‚é‚Ì‚ª‘å•Ï
TS ‚ðŠw‚Ô‚ÆAHaxe ‚̈̑傳‚ª•ª‚©‚éI
JavaScript ‚Ì‚¨‚©‚µ‚¢•”•ª‚ðC³‚µ‚Ä‚¢‚é‚©‚çA‚©‚È‚è‚â‚è‚â‚·‚¢
JS‚É—Ç‚³‚È‚ñ‚Ä‚ ‚Á‚½‚Ì‚©IH‚Ñ‚Á‚‚èƒhƒ“ƒL[I
3.7‚ÅECMA private field Žg‚¦‚È‚¢‚ñ‚¾‚ÈBƒKƒ`‚Ìprivate‚Í‚¨—a‚¯‚©‚Ÿ
ECMA private field‚Ì•K—v«A‘S‚Š´‚¶‚È‚¢‚í
tsŠg’£Žq‚Ìts“®‰æ‚Ƃ̱‚Ý•ª‚¯‚Á‚Ä‚¤‚Ü‚¢•û–@‚ ‚é‚©‚ÈH
ts-jest‚̓eƒXƒg‚Ì‚½‚Ñ‚É*.test.ts‚ðTypescript‚©‚çJavaScript‚ɃRƒ“ƒpƒCƒ‹‚µ‚ăeƒXƒg‚ðŽÀs‚µ‚Ä‚¢‚é‚Ì‚Å‚·‚©H
ƒeƒXƒgƒR[ƒh‚ª•Ï‚í‚ç‚È‚‚Ä‚àA“à•”“I‚ɃRƒ“ƒpƒCƒ‹‚µ‚Ä‚é‚ÌH
‚»‚ê‚Æ‚àAtscƒRƒ}ƒ“ƒh‚ŃeƒXƒgƒR[ƒh‚àƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚Š‚“ƒtƒ@ƒCƒ‹‚É•ÏŠ·‚µ‚½‚çA‚»‚ê‚ð—˜—p‚µ‚Ä‚é‚ÌH
ƒvƒƒpƒeƒB‚Åyield ‚Ì‚â‚è‚©‚½‚í‚©‚ç‚ñB
get hoge : Generator<number,void,boolean> {
@@@return (function* (){ yield 1; yield 2; yield 3; })();
}
‚Æ‚©‚Å‚¦‚¦‚Ì?
‚È‚ñ‚© get* hoge ‚à *get hoge ‚à get *hoge ‚à“{‚ç‚ê‚éB
‚»‚à‚»‚à getter ‚ɃWƒFƒlƒŒ[ƒ^‹L–@‚Í‚È‚¢
getter‚Å‚»‚ñ‚È•¡ŽG‚È‚±‚Æ‚ð‚·‚é‚ñ‚¶‚á‚ ‚È‚¢EEE
<Ts extends Array>(...args: Ts)=>
‚ÅTs‚Ì‘S‚Ä‚ÌŒ^‚ÌŒð·Œ^‚ð•Ô‚µ‚½‚¢‚ñ‚¾‚¯‚lj”\H
’÷‚ß•t‚¯‚̓Kƒ`ƒKƒ`‚Ȃ̂ɃKƒoƒKƒo‚È\•¶
ƒgƒ‰ƒ“ƒXƒpƒCƒ‹‚Ì‚¹‚¢‚Å‹N“®‚Í’x‚¢‚µÝ’耖ڂâƒnƒ}‚èƒ|ƒCƒ“ƒg‚̓Nƒ\‘‚¦‚é
‘I‘ðŽˆ‚Ì‚È‚¢ƒtƒƒ“ƒg‚Í‚Æ‚à‚©‚AŒ¾Œê‚ð‘I‚Ñ•ú‘è‚ȃT[ƒo[‚Åts“ü‚ê‚Ä‚Ü‚Åjs‚ðŽg‚¤ˆÓ–¡‚Á‚Ä‚È‚ÉH
>>376
ƒLƒcƒ}ƒ“‚È‚Ì‚É’N‚Æ‚Å‚àQ‚é‚Ý‚½‚¢‚È‚ñŠ´‚¶‚© Œ^–³‚µŒ¾Œê‚Æ‚¢‚¤ƒWƒƒƒ“ƒ‹‚ÅŒ©‚é‚ÆAˆê”Ôƒ}ƒV
https://github.com/microsoft/vscode-textbuffer/blob/master/src/common/position.ts ‚ðC#‚É‘‚«’¼‚µ‚Ä‚éB
44s–Ú‚©‚ç‚Ìwith‚ª•ª‚©‚ç‚ñB
with(newLineNumber: number = this.lineNumber, newColumn: number = this.column): Position {
if (newLineNumber === this.lineNumber && newColumn === this.column) {
return this;
} else {
return new Position(newLineNumber, newColumn);
}
‰ðà‚ÆC#‚É‘‚«’¼‚µ‚ÄB"Create a new postion from this position."‚Á‚Ä‚ ‚邯‚ÇA
‚Ç‚¤ŒÄ‚΂ê‚é‚ÌH‚à‚µ‚©‚µ‚Äwith•¶‚¶‚á‚È‚‚ÄAwith()‚Á‚ăƒ\ƒbƒhH ƒƒ\ƒbƒh‚Ì’è‹`ˆÈŠO‚̉½‚ÉŒ©‚¦‚é‚Ì‚©
‚»‚à‚»‚à JavaScript ‚É with •¶‚È‚ñ‚ÄEEE‚ ‚é‚Ì‚©‚扽‚¾‚±‚̎׈«‚ÈL‚¢‚ªƒvƒ“ƒvƒ“‚·‚é‚â‚ׂ¦‚â‚‚Í
>>203
ŒäŽÐ‚Í¡‚Ç‚¤‚¢‚¤ó‹µ‚É‚È‚Á‚Ä‚éH >>382
‰½‚à•Ï‚í‚Á‚Æ‚ç‚ñ‚æ
‹@”\Šg’£‚à‚Å‚«‚È‚¢‚©‚çAŒ»óˆÛŽ‚Æ‚¢‚¤–¼‚Ì•ú’u ˆá‚¢‰½H
interface Dictionary<T> { [key: string]: T; }
type Dictionary<T> = { [key: string]: T; };
‚»‚̃R[ƒh‚ÉŒÀ‚Á‚Ä‚ÍAˆá‚¢‚È‚¢‚©‚à‚È
interface ‚͌ォ‚ç’ljÁ‚Å‚«‚é
‚±‚ê playground ‚É‚Å‚à“\‚Á‚Ä‚Ý
```
interface DictionaryI {
a: string
b: string
}
type DictionaryT = {
a: string
b: string
};
interface DictionaryI {
wow: number
}
type DictionaryT {
wow: number
}
const di: DictionaryI = ({} as any)
console.log(di.wow)
```
‚¾‚©‚çAƒ‰ƒCƒuƒ‰ƒŠ‚Ì’è‹`‚Å‚Í‚½‚Ü‚ÉŽg‚í‚ê‚é
ƒvƒƒ_ƒNƒgƒR[ƒh‚ÅŽg‚Á‚Ä‚é“z‚Í•¨’m‚ç‚È‚¢‚©AÝŒv—Í‚Ì‚È‚¢‚â‚Â
„•¨’m‚ç‚È‚¢‚©AÝŒv—Í‚Ì‚È‚¢‚â‚Â
‚Ç‚¤‚µ‚ÄH
>>386
ƒPƒc‚ÉI‚Æ‚©T‚ð•t‚¯‚é‚Ì‚ÍÝŒv—Í‚Ì–³‚¢‚â‚ >>388
‚½‚¾‚̃Tƒ“ƒvƒ‹ƒR[ƒh‚É‚»‚ñ‚È‚±‚ÆŒ¾‚í‚ê‚Ä‚àwww
>>387
ˆÈ‰º——R
ẼfƒtƒHƒ‹ƒgON‚¾‚Á‚½prefer-interface‚ðˆø‚«‚¸‚Á‚Ä‚¢‚é
EŽ©•ª‚ÅŠÇ—‚Å‚«‚éƒR[ƒh‚È‚Ì‚ÉAinterface‚ÅŠg’£‚·‚é—]’n‚ðŽc‚³‚˂΂Ȃç‚È‚¢‚Ì‚Í‚¨‚©‚µ‚¢ >>389
> EŽ©•ª‚ÅŠÇ—‚Å‚«‚éƒR[ƒh‚È‚Ì‚ÉAinterface‚ÅŠg’£‚·‚é—]’n‚ðŽc‚³‚˂΂Ȃç‚È‚¢‚Ì‚Í‚¨‚©‚µ‚¢
ƒIƒuƒWƒFƒNƒgŽwŒü‚ð‘S”Û’è‚©‚æw >>390
‚½‚Ô‚ñŒN‚ÍAJava ‚Ì implements ‚ÉŽg‚¦‚é interface ‚Ì‚±‚Æ‚ðŒ¾‚Á‚Ä‚é‚Ì‚¾‚ÆŽv‚¤‚ªA
type ‚Å‚à implements ‘Š“–‚Ì錾‚ª‚Å‚«‚é‚Ì‚ÅA
TS ‚Ì interface ‚Í src •ÏX‚ª—eˆÕ‚Å‚È‚¢‚ªAƒ‰ƒCƒuƒ‰ƒŠ‚Ì«Ž¿ãŠg’£‚Ì—]’n‚ª•K—v‚ȃP[ƒX‚Å‚µ‚©—LŒø‚Å‚È‚¢
u“¯‚¶–¼‘O‚ÌŒ^‚È‚Ì‚ÉAŽÀ‚͌ォ‚ç src ‚Ì‚Ç‚±‚©‚ÅŠg’£‚³‚ê‚Ä‚Ü‚µ‚½v‚È‚ñ‚ÄŒ™‚¾‚낤H
‚Ç‚±‚Ì JavaScript ‚¾‚æ function hoge<T, S> (x: T, f: (x: T) => S) {
// ...
}
‚Ý‚½‚¢‚ÈŠÖ”‚ª‚ ‚Á‚ÄAˆø”f ‚̃fƒtƒHƒ‹ƒg’l‚ð identity:<T>(x: T) => T
‚É‚µ‚½‚¢‚ñ‚¾‚¯‚ÇA–³—‚©‚µ‚çH
hoge(1) <-- ‚±‚Ì‚Æ‚«‚Í T: number, S: number ‚Æ„˜_‚µ‚Ä‚Ù‚µ‚‚ÄA
hoge(1, n => `number: ${n}`) <-- ‚±‚Ì‚Æ‚«‚ÍT: number, S: string ‚Æ„˜_‚µ‚Ä‚Ù‚µ‚¢
‚²‚ß‚ñAŽ©ŒÈ‰ðŒˆ‚µ‚½
TypeScript‚ł͈ˑ¶Œ^‚ðƒI[ƒo[ƒ[ƒh‚ÅŽÀŒ»‚Å‚«‚é‚Ì‚Ë
```
function hoge<T>(x: T): T;
function hoge<T, S>(x: T, f: (x: T) => S): S;
function hoge<T, S>(x: T, f?: (x: T) => S) {
if (typeof f === "undefined") {
return x
}
return f(x)
}
```
‚±‚ê‚ňꉞA‘æ‚Qˆø”Žw’肵‚È‚©‚Á‚½‚çA–ß‚è’l‚ÌŒ^‚ð‘æ‚Pˆø”‚ÌŒ^‚Å„˜_‚µ‚Ä‚‚ê‚é‚悤‚É‚È‚Á‚½‚µA
Žw’è‚·‚ê‚΂»‚ÌŠÖ”‚Ì–ß‚è’l‚ÌŒ^‚Å„˜_‚µ‚Ä‚‚ê‚é‚悤‚É‚È‚Á‚½
„Our team has been focusing on performance after observing extremely poor editing/compilation speed with packages like material-ui and styled-components.
‚ [‚â‚Á‚Ï‚è material-ui ‚Æ styled-components ‚ª’x‚¢‚ñ‚¾
—¼•ûŽg‚Á‚½‚ç‘Ï‚¦“ï‚¢ƒŒƒxƒ‹‚Åd‚‚Äh‚©‚Á‚½
‰ŠwŽÒ‚ª¡‚©‚çTypeScript‚â‚郃Šƒbƒg‚Á‚Ä‚ ‚éH
•’iŽg‚Á‚Ä‚éC#‚ÌBlazor‚ªˆç‚‚܂ʼn䖂µ‚Ä‚»‚ê‚Ü‚Å‚ÍJSŽg‚¦‚΂¢‚¢‚©‚È[‚Æ‚¢‚¤‹C‚ª‚µ‚Ä‚é‚ñ‚¾‚¯‚Ç
EBlazor‚ªTS‚Æ“¯“™ƒŒƒxƒ‹‚Ü‚ÅŒ¾ŒêEŽsꂪˆç‚‚±‚Æ‚Í‚ ‚肦‚È‚¢
EJS‚ɖт̶‚¦‚½’ö“x‚Ì•¶–@‚ÅC#‚Æ“¯“™ˆÈã‚̃^ƒCƒvƒZ[ƒt‚̉¶Œb‚ðŽó‚¯‚ç‚ê‚é
‚ÆŽv‚¤‚æ
³’¼TSŽn‚ß‚Ä‚©‚ç‚ÍAJSi“Á‚É‘¼l‚ª‘‚¢‚½‚â‚Âj‚Í2“x‚ÆG‚肽‚‚È‚‚È‚Á‚½
Žd•û‚È‚ js ‘‚¢‚Ă鎞‚à jsdoc ‚ÅŒ^‚ð•t‚¯‚Ü‚‚Á‚Ä‚é
‚à‚¤‚ ‚Ì ‚É‚Í–ß‚ê‚È‚¢EEE
–Ñ‚ª¶‚¦‚½‚ÆŒ¾‚í‚ê‚Ä‚àƒWƒFƒlƒŠƒNƒXŽü‚è‚Æ‚©Žd—l‚ª‚¯‚Á‚±‚¤‘å‚«‚¢i‘å‚«‚¢‚¾‚¯‚Å‚»‚ñ‚Ȃɓ‚‚Í–³‚¢‚¯‚ÇjB‚ ‚Æ—ðŽj“I‚É“¯‚¶‚悤‚È‹@”\‚Ì‚à‚Ì‚ª•¡”‚ ‚é‚Ì‚Í‚â‚âh‚¢B
‘f‚Ìjs‚ÍŠm‚©‚ÉG‚肽‚‚È‚‚È‚Á‚½‚È`
>>400
‚Ü‚Ÿ‚»‚¤‚¾‚¯‚ÇAʼn‚Íbetter js’ö“x‚É :string ‚Ý‚½‚¢‚È’Pƒ‚ÈŒ^‘‚‚¾‚¯‚Å‚¢‚¢‚ÆŽv‚¤‚æ
‚»‚ꂾ‚¯‚ÅŒ€“I‚Ɉá‚Á‚Ä‚‚é ƒNƒ‰ƒXŽg‚¦‚邾‚¯‚ÅŠð‚µ‚©‚Á‚½Bprototype‚Æ‚©“ñ“x‚ÆG‚肽‚‚È‚¢B
‚¹‚Á‚©‚TypeScriptŽg‚¤‚Ì‚É‚È‚ñ‚ŃNƒ‰ƒX
json‚ÉŒ^‚ª•t‚‚̃}ƒWƒTƒCƒR[‚Á‚Ä‹C•ª‚É‚È‚é
@types/node ‚ð v14:x ‚Éã‚°‚½‚ç fs.write* Žü‚è‚ŃGƒ‰[‚ª‚¢‚Á‚Ï‚¢o‚½
ˆÈ‘O‚ÌŒ^’è‹`ƒtƒ@ƒCƒ‹‚Å‚Í‘æ2ˆø”‚ª any ‚¾‚Á‚½‚½‚ß‚ÉŒ©“¦‚³‚ê‚Ä‚½‚Ì‚Ë
vscoe+deno
d.ts‚ð—pˆÓ‚µ‚Äjs‚ðimport‚½‚ªƒCƒ“ƒeƒŠƒZƒ“ƒX‚ÉŒ^î•ñ‚ª‚Å‚È‚¢
Ž¿–₳‚¹‚Ä‚‚¾‚³‚¢
‰•à“I‚È‚à‚Ì‚©‚ÆŽv‚¢‚Ü‚·‚ª‚æ‚낵‚‚¨‚Ë‚ª‚¢‚µ‚Ü‚·
ˆÈ‰º‚Ì—l‚É getElementById() ‚É‚Äinput—v‘f‚ðŽæ“¾‚µ‚½ê‡Avalue‘®«‚ð“Ç‚ÝŽæ‚낤‚Æ‚·‚é‚Æ–â‘肪”¶‚µ‚Ü‚·B
@@const input = document.getElementById('input');
@@const text = input.value; // <- ƒvƒƒpƒeƒB 'value' ‚ÍŒ^ 'HTMLElement' ‚É‘¶Ý‚µ‚Ü‚¹‚ñBts(2339)
‰ðŒˆ•û–@‚ðŒŸõ‚·‚é‚ÆA
@@const input = <HTMLInputElement>document.getElementById('input');
@@const input = (document.getElementById('input')) as HTMLInputElement;
‚È‚Ç‚ÌŒ^ƒAƒT[ƒVƒ‡ƒ“HƒLƒƒƒXƒgH‚Å‰ðŒˆ‚·‚é‚悤‚É‘‚¢‚Ä‚¢‚é‹LŽ–‚ª‘½‚ƒqƒbƒg‚·‚é‚悤‚ÉŠ´‚¶‚Ü‚·B
Ž¿–â‚Æ‚µ‚Ü‚µ‚Ä‚ÍA
@EHTMLElement‚Å‚Í‚È‚HTMLInputElement“™‚Ì‹ï‘Ì“I‚ÈŒ^‚Å—v‘f‚ðŽæ“¾‚·‚é•û–@‚Í‚ ‚è‚Ü‚·‚©H
@E‹ï‘Ì“I‚ÈŒ^‚Ŏ擾‚Å‚«‚È‚¢ê‡A‚»‚ꂪHTMLInputElement‚Å‚ ‚é‚Æ”»’è‚·‚é•û–@‚͂ǂ̂悤‚È‚à‚Ì‚ª‚ ‚è‚Ü‚·‚©H
ˆÈãA’·‚‚È‚è‚Ü‚µ‚½‚ª‚²‹³Žö’¸‚¯‚é‚ÆŠð‚µ‚¢‚Å‚·B
>>410
https://bi t.ly/2zBJQbZ
‚±‚ñ‚ÈŠ´‚¶‚Å‚¢‚©‚ª‚Å‚²‚´‚¢‚Ü‚µ‚傤‚©H
getElementById ‚̎擾Œ‹‰Ê‚ÍAHTMLElement ‚ðŒp³‚µ‚½‰½‚©‚Å‚ ‚邱‚Æ‚ÍŠmŽÀ‚¾‚ª
‚æ‚è‹ï‘Ì“I‚ÈŒ^‚Å‚ ‚邱‚Æ‚Í if •¶‚È‚Ç‚Å”»’肵‚È‚¢‚Æ‚í‚©‚ç‚È‚¢‚Ì‚Å
i“Ç‚Ý‚â‚·‚¢jƒƒ“ƒ‰ƒCƒi[‚·‚é‚͓̂‚¢‚©‚È ƒŠƒ“ƒNæ‚Í typescript playground
’·‚·‚¬‚Ä“\‚ê‚È‚©‚Á‚½
url’†‚Ì ‚ðŽæ‚Á•¥‚Á‚ăAƒNƒZƒX‚µ‚Ä‚Ù‚µ‚¢
‚±‚Á‚¿‚à’Zkurl‹K§‚Å“\‚ê‚È‚©‚Á‚½
>>412,413
‚È‚é‚Ù‚ÇAconstructor‚ÆŒ^‚Ì–¼Ì‚͈ê’v‚·‚é‚Ì‚Å”äŠr‚ÉŽg‚¦‚é‚Ì‚Å‚·‚ËB
3ƒpƒ^[ƒ“‚à‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·BŽQl‚É‚³‚¹‚Ä’¸‚«‚Ü‚·B vscode‚̃^ƒXƒN‚Ńrƒ‹ƒh‚µ‚½‚¢‚Ì‚Å‚·‚ªAãŽè‚‚¢‚«‚Ü‚¹‚ñB
ʼn‚©‚ç“ü‚Á‚Ä‚¢‚½"tsc: ƒrƒ‹ƒh - tsconfig.json"‚Æ‚¢‚¤Ý’è‚ðŽg‚Á‚ă^ƒXƒN‚ðŽÀs‚·‚é‚ÆA
> Executing task: tsc -p (È—ª)\tsconfig.json <
ƒpƒ‰ƒ[ƒ^[‚Ì‘Ž®‚ªˆá‚¢‚Ü‚· - -Command
‚Æo‚ărƒ‹ƒh‚ªI—¹‚µ‚Ü‚¹‚ñB
ƒRƒ“ƒ\[ƒ‹‚É“¯‚¶ƒRƒ}ƒ“ƒh‚ðƒRƒsƒy‚·‚é‚Æ‚¿‚á‚ñ‚Æjsƒtƒ@ƒCƒ‹‚ªì¬‚³‚ê‚Ü‚·B
ƒOƒO‚Á‚Ä‚Ý‚½‚Ì‚Å‚·‚ªA‚»‚à‚»‚àtsc‚Åuƒpƒ‰ƒ[ƒ^[‚Ì‘Ž®‚ªˆá‚¢‚Ü‚·v‚Æ‚¢‚¤ƒGƒ‰[‚ªo‚é‚Æ‚¢‚¤‹LŽ–‚·‚ç‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚½EEE
‚Ç‚¤‚·‚ê‚΂¢‚¢‚Å‚µ‚傤‚©B
•’Ê‚Énpm‚Ænpm script‚̈ꕔ‚É‘g‚Ýž‚ñ‚¾•û‚ª‚¢‚¢‚ÆŽv‚¤
vscode‚̃^ƒXƒN‚Æ‚©Žg‚Á‚½‚±‚Æ‚È‚¢‚µA•K—v«‚àŠ´‚¶‚½‚±‚Æ‚È‚¢‚È
tsc‚ª‚Ç‚±‚ɃCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚é‚©A‚Æ‚©ŠÖŒW‚ ‚è‚»‚¤
npx tsc --init
‚ÅAtsconfig.json ‚ªo—ˆ‚é
package.json ‚ÉA‚±‚¤‘‚¢‚Ä‚¨‚¢‚ÄA
"script": {
"build": tsc
},
npm run build
‚ÅAƒRƒ“ƒpƒCƒ‹‚·‚é
>>416
‚»‚¤‚·‚邱‚Æ‚É‚µ‚Ü‚·
>>417
AppData\Roaming\npm
‚É‚ ‚è‚Ü‚µ‚½B
>>418
Œ³XƒRƒ“ƒ\[ƒ‹ã‚©‚ç‚͂ǂ̃Rƒ}ƒ“ƒh‚àŽÀs‚Å‚«‚é‚Ì‚Å‚·‚ªA
vscode‚̃^ƒXƒN‚©‚çŽg‚¤‚ƃGƒ‰[‚ªo‚Ä‚µ‚Ü‚¤‚ñ‚Å‚·B
FXƒeƒXƒg‚µ‚Ä‚¢‚½‚Æ‚±‚ëA
’P‚È‚éƒVƒFƒ‹ƒRƒ}ƒ“ƒh echo unko ‚Å‚·‚çƒGƒ‰[‚ªo‚é‚Ì‚ÅvscodeŒÅ—L‚Ì–â‘è‚Á‚Û‚¢‚Å‚· >>415
ƒpƒ‰ƒ[ƒ^‚Ì‘Ž®‚ªˆá‚¤‚Á‚Ä‚Ì‚ÍPowerShell‚Å‚æ‚Œ©‚éƒGƒ‰[‚¾‚¯‚ÇAVSCode‚Á‚ÄPowerShell’@‚¢‚Ä‚é‚ñ‚¾‚Á‚¯H
VSCodeŒÅ—L‚Ì–â‘è‚ÆŒˆ‚߂‚¯‚é‚ñ‚¶‚á‚È‚‚Ä‚à‚¤‚µ’²¸‚µ‚Ä‚Ý‚½‚çH ‰ðŒˆ‚µ‚Ü‚µ‚½
“ú–{Œê”Å‚ÌWindows‚Å‚Ípowershell.exe‚ªShiftJIS‚Å“Ç‚Ü‚ê‚é‚Ì‚ÅA
‡‚킹‚Ävscodeã‚ÌPowerShell‚Ì•¶ŽšƒR[ƒh‚ðShiftJIS‚É•Ï‚¦‚Ä‚¢‚½‚Ì‚ªŒ´ˆö‚Å‚µ‚½B
Œ³‚ÌUTF-8‚É–ß‚µ‚½‚ç–â‘è‚È‚ŽÀs‚Å‚«‚Ü‚µ‚½B
tsc‚ðƒtƒ‹ƒpƒX‚ÅŽÀs‚µ‚½‚çƒpƒX‚Ì“r’†‚ɃXƒy[ƒX‚ª”¶‚µA
Powe‚’ShellƒXƒNƒŠƒvƒg‚̃fƒoƒbƒOŽž‚É‚æ‚Œ©‚½•¶Žš‰»‚¯‚¾‚Á‚½‚Ì‚Å‹C‚¯‚Ü‚µ‚½B
>>420
‚²–¼“š‚Å‚·
PowerShell‚ª’@‚©‚ê‚Ä‚¢‚ÄAƒGƒ‰[‚àPowerShell‚©‚ç‚Å‚µ‚½‚— Node‚ŃT[ƒo[‚𗧂ĂĂ¢‚é‚悤‚Èê‡A
ƒ†[ƒU[‚ª“ü—Í‚µ‚½’l‚ðŠi”[‚·‚é•Ï”‚ÌŒ^‚͈ê’Uunknown‚Æ‚µ‚Ä‚¨‚¢‚½•û‚ª—Ç‚¢‚Ì‚Å‚µ‚傤‚©H
—Ⴆ‚Έȉº‚Ì—l‚Èꇂł·B
@const func1 = (userInput: unknown) => {...};
@const func2 = (userInput: string) => {...};
ƒoƒŠƒf[ƒVƒ‡ƒ““™‚ðs‚Á‚Ä–â‘肪–³‚¯‚ê‚ÎA
‰ü‚ß‚ÄŒ^錾‚µ‚½•Ï”‚É‘ã“ü‚µ’¼‚·‚悤‚È•û–@‚ªˆê”Ê“I‚Å‚·‚©H
¡TypeScript+React‚ð•×‹‚µ‚Ä‚¢‚é‚Ì‚Å‚·‚¯‚ÇAƒe[ƒuƒ‹‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚ÅŽg‚¢‚â‚·‚¢‚à‚Ì‚Á‚Ä–³‚¢‚Å‚·‚©H
ƒe[ƒuƒ‹‚̃wƒbƒ_‚Í‚»‚Ì‚Ü‚Ü‚Åc‚Í“à—e‚¾‚¯ƒXƒNƒ[ƒ‹‚µ‚ĉ¡‚̓e[ƒuƒ‹‚àˆê‚ɃXƒNƒ[ƒ‹‚·‚é‚Ý‚½‚¢‚È‚à‚Ì‚ª—Ç‚¢‚Å‚·
jexcel
react-table
react-table‚ÍA‰SŽÒ‚È‚ç v6 ‚¨‚·‚·‚ß
——R‚ÍA•W€‚ÅUI‚ª•t‚¢‚Ä‚é‚©‚çŠÈ’P‚É‚»‚ê‚Á‚Û‚¢‚à‚Ì‚ª‚Å‚«‚é
ƒhƒLƒ…ƒƒ“ƒg’²‚ׂê‚Ί„‚Æ‘½‚‚Ì‹““®‚ɑΉž‚Å‚«‚é‚Í‚¸
‘ã‚í‚è‚ÉAUI‚̃JƒXƒ^ƒ}ƒCƒY‚ª‚‚炢
u‚ ‚»‚±‚Ìcss‚ð˜M‚肽‚¢‚¯‚ÇA‚Ç‚¤‚â‚Á‚ÄŽw’è‚·‚ê‚΂¢‚¢‚©‚í‚©‚ç‚ñv
u!important‚¶‚á‚È‚¢‚Æã‘‚«‚Å‚«‚È‚¢v
“I‚È‚±‚ƂɂȂ肪‚¿
‚ ‚ÆA@types ‚ð v6 ‚Ì‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é‚悤’ˆÓ‚·‚邱‚Æ
UI‚²‚育‚è‚ɃJƒXƒ^ƒ}ƒCƒY‚µ‚½‚¢‚È‚çÅV‚Ì v7
headless ‚Ææ‚í‚ê‚Ä‚é‚悤‚ÉAUI‚ªˆêØ‚È‚¢‚©‚ç‘S‚ÄŽ©•ª‚ÌŽv‚¢’Ê‚è
‘ã‚í‚è‚ÉAŠwKƒRƒXƒg‚ª‚‚¢
‚ ‚Æ @types ‘‚¢‚½‚â‚‚ªƒoƒJ‚È‚Ì‚©AGenerics‚̑Ήž‚ª“‚‚Ä
ƒLƒƒƒXƒg‚ª‚½‚‚³‚ñ•K—v‚Å‚¤‚ñ‚´‚è‚·‚é
>>425
—L“‚²‚´‚¢‚Ü‚·Areact-table‚𒲂ׂĂ݂܂·B
material-ui‚ªElectron‚Å
TypeError: Cannot use 'in' operator to search for 'ontouchstart' in null
‚Æ‚©o‚Ä“®‚©‚È‚‚Ä¢‚Á‚Ä‚¢‚Ü‚µ‚½B
ƒ{ƒ^ƒ“ˆêŒÂ‚µ‚©Žw’肵‚Ä‚¢‚È‚¢ƒTƒ“ƒvƒ‹‚ðŽÊ‚µ‚Ä‚±‚ê‚Å‚·B ‚±‚ê‚Á‚Û‚¢‚ÌŒ©‚½‚±‚Æ‚ ‚邯‚ÇA‘¼‚É‚à‹C‚ɂȂ鎖‚ª‚ ‚Á‚ÄŒ©—Ž‚Æ‚µ‚Ä‚Ü‚µ‚½
<div>‚É‘‚¢‚Ä‚ ‚é‚Ì—v‚é‚Ì‚©‚ÈH
¡ŽŽ‚¹‚éŠÂ‹«‚Å‚È‚¢‚Ì‚ÅŒã“ú‚É
TypeScript‚Á‚ÄsetInterval‚Æ‚©setTimeout,
async/await, Promise‚Æ‚©Žg‚¦‚é‚ñ‚Å‚·‚©H
‹t‚ÉŽg‚¦‚È‚¢ˆÓ–¡‚ª‚í‚©‚ç‚È‚¢
Ruby on Rails ‚Å‚ÍAReact ‚à‘½‚¢‚¯‚ÇA
TypeScript ‚ðŽg‚¤‹ïŽt‚ÍA‚¢‚é‚Ì‚©‚ÈH
ƒ‹ƒrƒJƒX‚Í@‹³ã‚Ì——R‚©‚çTypeScript‚È‚Íâ‘΂Ɏg‚¦‚È‚¢‚ñ‚ÅÁ‚¦‚Ä
ƒtƒƒ“ƒgƒGƒ“ƒh‚Ì•û‚ªŒµŠi‚ÈŒ¾Œê‚Å‘‚©‚ê‚Ä‚é‚Æ‚©“ª‚¨‚©‚µ‚¢‚©‚ç‚Èw
CoffeeScript‚Ƃ͉½‚¾‚Á‚½‚Ì‚©ƒÖ
Ruby on Rails 6 ‚©‚çANode.js, webpack ‚ª•W€‚É‚È‚Á‚½‚©‚çA
‚à‚¤ACoffee Script ‚ɂ͈ˑ¶‚µ‚Ä‚¢‚È‚¢
‚¾‚©‚ç‚Ç‚¤‚µ‚½RubyƒKƒCƒW
‚³‚Á‚³‚ÆÁ‚¦‚ë
webpackŽg‚¦‚é‚È‚çA•’Ê‚É‚à‚¤RoR‚Åhtmlì‚é•K—v‚È‚¢‚Ì‚Å‚Í
‚Ù‚ñ‚Ü‚â‚È
PHP‚àRuby‚àAŒ^–³‚µ•³Œ¾Œê‚Í–Å‚Ñ‚é‚ׂ«‚â
jsonˆÈŠO‚ð’‚éŽ×ˆ«‚ÈWebƒT[ƒo[‚Í1‘äŽc‚炸”j‰ó‚µ‚ë
‚±‚Ìêˆá‚¢Ruby—d‰ö‚̓Aƒ“ƒJ”ò‚΂³‚ñ‚Å‚àˆê‰žƒŒƒXŒ©‚Ä‚é‘fU‚è‚ðŒ©‚¹‚é‚Ì‚ª‚¿‚å‚Á‚Æ‚µ‚½ƒzƒ‰[
GUI ‚ÍAReact, Bootstrap ‚Å—Ç‚¢‚¯‚ÇA
ƒT[ƒo‘¤‚ªANode.js ‚¶‚áh‚¢
Rails, Sinatra ‚È‚Ç‚ÌARuby ‚Ì•û‚ª•ª‚©‚è‚â‚·‚¢
Ruby‚ÌŒ‡“_‚ÍAweb ƒAƒvƒŠ‚¾‚¯‚µ‚©ì‚ê‚È‚¢‚±‚ÆI
ƒXƒ}ƒz—pƒAƒvƒŠ‚à•K—v‚È‚çAElectron, React Native + Expo
‚»‚ê‚©AUnity
Ruby‚ÌŒ‡“_‚Í‚¨‘O‚Ý‚½‚¢‚ȃLƒ`ƒKƒC‚ªƒXƒŒƒ`‚̃Nƒ\é“`‚Å•]‰¿‚ð‰º‚°‚Ă邱‚Æ‚¾‚æ
Œ^–³‚µ•³Œ¾Œê‚â‚Á‚Ä‚él‚Í‹A‚邾‚¯‚¶‚áÏ‚Ü‚³‚ê‚È‚¢
Ž€‚ñ‚Å‚‚¾‚³‚¢
‰´‚à“Œ‰¡ü‘ã•\‚Æ‚µ‚ÄŽQ‰Á‚µ‚Ä‚‚é‚í
>Œ^–³‚µ•³Œ¾Œê
¡‚Ç‚«‚ÌŒ¾Œê‚ʼn½‚ª‚ ‚Á‚½‚Á‚¯H
>>442
10”NˆÈã‘O‚É“¯‚¶‚悤‚ÈJava dis‚â‚Á‚Ä‚½ƒXƒs[ƒJ[‚ª‚¢‚½‚ª
•Ê‚̃Xƒs[ƒJ[/ƒRƒ~ƒbƒ^[’B‚É‚ ‚ê‚Í‚â‚ß‚½‚Ù‚¤‚ª‚¢‚¢‚Á‚ÄŒµ‚µ‚”á”»‚³‚ê‚Ä‚½‚¯‚Ç‚È
‚»‚ÌŽž‘ã‚̘b‚È‚Ì‚©‚È ‚ ‚è‚Ü‚·‚Åšg‚¦‚é‚Æ
JavaŽR’†‚³‚ñ
*byùˆä‚³‚ñ
TypeScript ‚ÅA–³–¼”z—ñ‚ÌJSON ƒtƒ@ƒCƒ‹‚ÍAimport ‚Å‚«‚È‚¢
[
["a", 10],
["b", 20]
]
–¼‘O‚ð•t‚¯‚ê‚ÎAimport ‚Å‚«‚éB
import { xyz } from "./a.json";
{"xyz": [
["a", 10],
["b", 20]
]
}
typescript‚ÉŒÀ‚炸
‚»‚¤‚¢‚¤ŽÀ‘•Œ‹\‚ ‚é
‘S‘Ì‚Í{}‚ð‰¼’è‚µ‚Ä‚é‚Ì
json‚Á‚ăgƒbƒvƒŒƒxƒ‹‚ÍObject•K{‚¾‚ÆŽv‚Á‚Ä‚½
‚»‚¤‚¢‚¤Žd—l‚ ‚é‚Ì‚©‚È
Type Script Žg‚Á‚Ä‚Ý‚ÄŽv‚Á‚½‚¯‚Ç
ʼn‚©‚ç ES ‚ª‚±‚ÌŽd—l‚¾‚Á‚½‚ç–{“–‚É•‚©‚Á‚Ä‚½
‚»‚µ‚Ä¡‚̉ۑè‚ÍŠù‚É‚ ‚é ES ‚̃‰ƒCƒuƒ‰ƒŠÛ‚肱‚Þ‚Ì‚ª–Ê“|
‚È‚ñ‚Æ‚©‚È‚ç‚ñ‚Ì‚©HH‚Á‚Ä‚¢‚¤
C# Žg‚Á‚Ä‚Ý‚ÄŽv‚Á‚½‚¯‚Ç
ʼn‚©‚ç C ‚ª‚±‚ÌŽd—l‚¾‚Á‚½‚ç–{“–‚É•‚©‚Á‚Ä‚½
‚»‚µ‚Ä¡‚̉ۑè‚ÍŠù‚É‚ ‚é C ‚̃‰ƒCƒuƒ‰ƒŠÛ‚肱‚Þ‚Ì‚ª–Ê“|
‚È‚ñ‚Æ‚©‚È‚ç‚ñ‚Ì‚©HH‚Á‚Ä‚¢‚¤
Š„‚ƃ}ƒW‚ÅUŽç‹¤‚ÉTypeScript‚ªÅ‹‚¾‚í
TS‚ÉŒ‡‚¯‚Ä‚é‚Ì‚ÍA‚ ‚Ƃ̓pƒ^[ƒ“ƒ}ƒbƒ`‚‚ç‚¢‚¾‚낤
TypeScript‚ªƒlƒCƒeƒBƒuƒoƒCƒiƒŠ“f‚‚悤‚É‚È‚ê‚΂¢‚¢
>>449
‚»‚à‚»‚àimport‚Íjson‚ð“Ç‚Þ‚½‚ß‚É‚ ‚é‚킯‚¶‚á‚È‚¢‚©‚ç“Ç‚ß‚È‚‚Ä‚à•sŽv‹c‚Í‚È‚¢‚ªA
ts3.9.6‚ÅŽŽ‚µ‚Ä‚Ý‚½‚ç•’Ê‚É“Ç‚ß‚é‚ñ‚¾‚ªH
>>451
rfc“ǂ߂΂킩‚邪ƒgƒbƒvƒŒƒxƒ‹‚¾‚¯“Á•Êˆµ‚¢‚·‚é•K—v‚È‚¢‚µ‚ËB ./a.json ‚Ɉȉº‚¾‚¯‚ð‘‚¢‚ÄA‚Ç‚¤‚¢‚¤import •¶‚ð‘‚¢‚½‚ÌH
[
["a", 10],
["b", 20]
]
‚ӂ‚¤‚É
import j from './a.json';
"module"‚Í"commonjs"
esModuleInterop ‚© allowSyntheticDefaultImports ‚Í true ‚É‚È‚Á‚Ä‚éH
false ‚▢ݒè‚È‚çA `import * as j from './a.json';` ‚ŃCƒ“ƒ|[ƒg‚·‚é•K—v‚ª‚ ‚é
‚ ‚ ‚·‚Ü‚ñA"resolveJsonMdule": true ‚µ‚Ä‚½B
‚‚܂èmodule‚¶‚á‚È‚¢json‚ðƒ[ƒh‚µ‚½‚¢‚Ȃ炱‚ꂪ•K—v‚Á‚Ä‚±‚Æ‚ËB
‚ ‚êH •’Ê‚ÉA‚±‚ê‚ÅAimport ‚Å‚«‚½I
˜R‚ê‚ÌŠ¨ˆá‚¢‚¾‚Á‚½‚Ý‚½‚¢
import j from "./a.json";
˜R‚ê‚ÌÝ’è‚ÍA
"module": "es2015",
"esModuleInterop": true,
"resolveJsonModule": true,
‚±‚¤‚¢‚¤‚Ì‚Í‚¾‚ß‚È‚ñ‚¾‚Á‚¯
[
["a", 10],
["b", 20],
]
TypeScript ‚ÌŠJ”’†‚ÍA
Webpack ‚̃Iƒtƒ‰ƒCƒ“‹@”\Aworkbox ‚ðŽg‚í‚È‚¢‚©‚çA
package.json ‚ÌA"workbox-webpack-plugin": "^5.1.3" ‚ðA
ƒRƒƒ“ƒgƒAƒEƒg‚µ‚悤‚Æ‚µ‚½‚ªAŒ`Ž®ƒGƒ‰[‚É‚È‚Á‚Äo—ˆ‚È‚¢
휂͂ł«‚邯‚ÇAƒRƒƒ“ƒgƒAƒEƒg‚ÅŽc‚µ‚Ä‚¨‚«‚½‚¢
>>461
JSON ƒtƒ@ƒCƒ‹‚Å‚Ío—ˆ‚È‚¢
‚æ‚’m‚ç‚È‚¢‚¯‚ÇAV‚µ‚ß‚ÌAJS/TS ƒtƒ@ƒCƒ‹‚Å‚Ío—ˆ‚é‚©‚à ‚æ‚’m‚ç‚È‚¢‚È‚ç–Ù‚Á‚Ä‚ëruby¶Þ²¼Þ
>>461
ƒPƒcƒJƒ“ƒ}‚ðƒtƒ@ƒbƒN‚Å‚«‚é‚Ì‚ÍECMAScript 5ˆÈã
JSON‚̓tƒ@ƒbƒN‚Å‚«‚È‚¢ ƒNƒ‰ƒCƒAƒ“ƒgŒü‚¯‚ÌŠJ”ƒT[ƒo[‚ª•t‚¢‚Ä‚¢‚éAParcel ‚ðŽg‚Á‚Ä‚¢‚é‹ïŽt‚¢‚éH
Postman ‚ðŽg‚Á‚Ä‚¢‚é‹ïŽt‚¢‚éH
‚±‚ê‚ÍAREST ƒNƒ‰ƒCƒAƒ“ƒg‚©‚ÈH
˜R‚ê‚ÍAVSCode ‚ÌŠg’£‹@”\‚ÌAREST Client ‚ðŽg‚Á‚Ä‚¢‚邯‚Ç
‘¼‚É‚ÍATypeScript ‚ÅAExpress ƒT[ƒo[‚ðŽÀs‚·‚éAts-node-dev ‚ÍH
pacage.json‚̃o[ƒWƒ‡ƒ“‚ðŽæ“¾‚µ‚½‚‚Ä
src/index.ts‚Å
import {version} from '../package.json'
‚ðŽv‚¢‚‚¢‚½‚Ì‚Å‚·‚ªA‚±‚ꂾ‚ƃRƒ“ƒpƒCƒ‹‚Ådist‚É”ro‚³‚ê‚é‚Æ‚«‚Épackage.json‚à”ro‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·
‚±‚ê‚ð‰ðŒˆ‚·‚éiˆË‘¶ŠÖŒW‚ðdist‚ÉŽ‚Á‚Ä‚‚é‚Ì‚Å‚Í‚È‚‚ª./package.json‚ðí‚ɓǂނ悤‚É‚µ‚½‚¢)•û–@‚Í‚ ‚é‚Ì‚Å‚µ‚傤‚©H
ƒRƒ“ƒpƒCƒ‹‚·‚邽‚Ñí‚ÉÅV‚Ìpackage.json‚ªdist‚É”ro‚³‚ê‚é‚ñ‚¾‚©‚ç
‚»‚ê‚Å‚¦‚¦‚ñ‚¿‚ႤH
>>469
Ž©•ª“I‚É‚Ídist‚É”ro‚³‚ê‚éæ‚É‚à‚¤ˆê‚Âpackage.json‚ªì‚ç‚ê‚é‚Ì‚ª‹CŽ‚¿ˆ«‚¢‚ÆŠ´‚¶‚½‚Ì‚Å‚·‚ª‚»‚¤‚Å‚à‚È‚¢‚ñ‚Å‚·‚©‚ËH •’Ê‚Égitignore‚µ‚Ă邾‚낤‚µdist‚Épackage.json‚ª‚ ‚Á‚Ä‚à“Á‚ɃfƒƒŠƒbƒg‚È‚¢‚µ
dist‚ɉ½‚ª“f‚©‚ê‚Ä‚Ä‚à‚¦‚¦‚ñ‚¿‚ႤH
>>468
process.env.npm_package_version
‚¶‚áƒ_ƒ‚È‚ÌH ‚à‚¤4.0‚ÌŽž‘ã‚È‚Ì‚©EEE
‚»‚ê‚È‚Ì‚É‚¨‚Ü‚¢‚ç‚̃vƒƒ_ƒNƒg‚Æ‚«‚½‚çEEE
‚±‚±‚Å•·‚¢‚Ä—Ç‚¢‚Ì‚©‚í‚©‚ç‚È‚¢‚¯‚Çimport‚ÌŠg’£Žq(.js)‚ðÈ—ª‚µ‚ÄAjs•ÏŠ·Žž‚ÉŠg’£Žq‚ð‚‚¯‚邱‚Æ‚Á‚Ä‚Å‚«‚È‚¢‚©‚ÈH
ŠJ”’†‚ÍtscŽg‚Á‚ÄŠJ”ŽÒI—¹Žž‚¾‚¯webpackŽg‚¢‚½‚¢‚Ì‚¾‚¯‚Ç‚à
‚»‚̂悤‚ÉwebpackÝ’è‚·‚邾‚¯‚Å‚Í
css‚âjpg‚Æ‚©‚Ì”ñƒvƒƒOƒ‰ƒ€ƒtƒ@ƒCƒ‹‚É‚µ‚©import•¶‚ÉŠg’£Žq‘‚¢‚½‚±‚Æ‚È‚¢‚í
webpack‚Ì•û‚Å‚È‚ñ‚Æ‚©‚·‚邵‚©‚È‚¢‚©B
‚ ‚肪‚Æ
typescript ‚̃|ƒŠƒV[‚©‚ç‚·‚é‚Æ«—ˆ“I‚É‚à‘Ήž‚³‚ê‚é‰Â”\«‚Í’á‚¢
TypeScript‚Ì‚Ü‚¦‚ÉWebAssembly‚ª“oꂵ‚Ä‚¢‚½‚ç‚Ý‚È‚»‚Á‚¿‚É”ò‚Ñ•t‚¢‚½‚Ì‚¾‚낤‚©B
‰½‚¾‚©‚ñ‚¾Œ¾‚Á‚Ä‚Ý‚ñ‚ÈJavaScript‚ª‘åD‚«‚¾‚©‚ç‚È
‚»‚ê‚Ƀuƒ‰ƒEƒU‚ÉŽÀ‘•‚³‚ê‚Ä‚¢‚éAPI‚ÍJavaScript‚©‚çŽg‚¤‚±‚Æ‘O’ñ‚¾‚©‚çWebAssemblyŽg‚Á‚Ä‚à—]Œv‚È‹ê˜J‚·‚邾‚¯‚¾
ƒQ[ƒ€‚É‚ÍŒü‚¢‚Ă邾‚낤‚¯‚Ç
Šù‘¶‚ÌJSŽ‘ŽY‚ð—¬—p‚Å‚«‚½‚Ì‚à‹‚Ý‚Ì1‚‚¾‚Á‚½‚ÆŽv‚¤‚©‚çA‚â‚Á‚ÏTS‚Ìí—ªŸ‚¿‚¶‚á‚Ë‚¦‚Ì
‚‚©WASM‚Á‚ĈꎞŠú‘›‚ª‚ê‚Ä‚½‚¯‚Ç¡‚Ç‚¤‚È‚Á‚½‚ñ‚¾H
>>489
Unity‚ªŽÀ—pH‚É‚È‚Á‚Ä‚é‚®‚ç‚¢B
‚È‚É‚µ‚ëAŽd—l‚àŠÜ‚ß‚Ä
¡Œã‚Ç‚¤‚È‚é‚©‚í‚©‚ç‚ñ󋵂łÍH Flutter‚ªDart‚¶‚á‚È‚‚ÄTS‚¾‚Á‚½‚ç—Ç‚©‚Á‚½‚Ì‚É
‚Ù‚ñ‚Æ‚»‚ê‚È
‚ ‚ñ‚È—ò‰»Java‚Ý‚½‚¢‚ÈŒ¾Œê‚ ‚肪‚½‚ª‚Á‚Ä‚é˜A’†‚Ì“ª‚ª—‰ð‚Å‚«‚È‚¢
‘債‚Ä‹@”\ˆá‚í‚È‚¢‚¶‚á‚ñB
‰½‚ª‘«‚è‚È‚¢‚ÆŽv‚Á‚Ä‚é‚ÌH
‚»‚¤‚¾‚ÈAJava‚ÆJavaScript‚àˆê‚¾‚µ‚È
>> Microsoft‚ª2018”N‚É75‰ƒhƒ‹i–ñ8000‰‰~j‚ð“Š‚¶‚Ä”ƒŽû‚µ‚½GitHub
’m‚ç‚ñ‚©‚Á‚½
ƒIƒ“ƒ‰ƒCƒ“”Å‚Ìvscode‚ªGitHub‚É‚ ‚é‚Ì‚Í‚»‚¤‚¢‚¤‚킯‚©
ƒsƒ`ƒƒƒC‚̃}ƒCƒNƒƒ\ƒtƒg‚Í—Ç‚¢ƒ}ƒCƒNƒƒ\ƒtƒgB
‚±‚ñ‚É‚¿‚ÍBƒvƒƒOƒ‰ƒ~ƒ“ƒO‰SŽÒ‚Å‚·B
TypeScript‚ÆJavaScript‚Í‚Ç‚Á‚¿‚ªÅ‹‚È‚ñ‚Å‚µ‚傤‚©H
‚±‚ê‚©‚çŽn‚ß‚éꇂ͂ǂÁ‚¿‚ª‚¢‚¢‚Ì‚Å‚·‚©H
TypeScript‚ÍJavaScript‚Æ‚‚ç‚׎Às‘¬“x‚Í•Ï‚í‚ç‚È‚¢‚Ì‚É
ÓIŒ^•t‚¯‚Ì‚½‚ß‹Lq‚ª–Ê“|‚ÅŠwK‚·‚鉿’l‚ª‚È‚¢‚Æ—F’B‚ª
Œ¾‚Á‚Ä‚½‚ñ‚Å‚·‚ª‚±‚ê‚ͳ‚µ‚¢‚Å‚·‚©H
>>501
•’i‚©‚ç‚ß‚¿‚á‚‚¿‚á‚È
“Ç‚ß‚È‚¢ƒR[ƒh‘‚¢‚Ä‚él‚É‚Í
“‚¢‚ÆŽv‚¢‚Ü‚·‚æB >>502
‚È‚é‚Ù‚ÇB‚‚܂èTypeScrip‚ÍtƒR[ƒh‚ð‚«‚ê‚¢‚ÉŒ©‚¹‚邽‚ß‚¾‚¯‚ÌŒ¾Œê‚Á‚Ä‚±‚Æ‚È‚ñ‚Å‚·‚ËB ‰¿’l‚ª‚í‚©‚é‚悤‚É‚È‚é‚Ü‚Å‚ÍJSŽg‚¤‚Ì‚ð‚¨‚·‚·‚ß‚·‚é
¡TSG‚Á‚Ä‚àŒ™‚¢‚ɂȂ邾‚¯‚¾‚ÆŽv‚¤
‚ñBBB‰¿’l‚ª•ª‚©‚él‚É‚µ‚©‚í‚©‚ç‚È‚¢ƒvƒŒü‚¯‚ÌŒ¾Œê‚È‚ñ‚Å‚·‚ËBBB
ãY—í‚ÉŒ©‚¦‚é‚Æ‚¢‚¤‚±‚Æ‚Í‘¼l‚ª‘‚¢‚½ƒR[ƒh‚Å‚ ‚Á‚Ä‚à—‰ð‚µ‚â‚·‚¢‚Æ‚¢‚¦‚é
•¡”l‚ÅŠJ”‚·‚é‚Æ‚«—p‚Á‚Ä‚±‚Æ‚Å‚·‚ËB
ˆêl‚ÅWEBƒAƒvƒŠì‚Á‚Ä–ž‘«‚µ‚Ă镪‚É‚Í•K—v‚È‚³‚»‚¤‚Å‚·‚ËB
ƒ\[ƒX‚ðŒöŠJ‚·‚鎞‚ÉŒ^‚Í•K{‚¾‚È
•¡”lŠJ”‚¾‚Æ•K‘R“I‚É‘¼l‚Ƀ\[ƒX‚ðŒöŠJ‚·‚é–󂾂©‚çŒ^‚Í•K{‚¾‚È
ˆêl‚ÅŠJ”‚µ‚Ă鎞‚à–¢—ˆ‚ÌŽ©•ª‚Ƀ\[ƒX‚ðŒöŠJ‚·‚é‚Æl‚¦‚ê‚ÎŒ^‚Í•K{‚¾‚È
‚±‚Ì—‹ü‚Ås‚‚ÆŒ^‚ª•K—v–³‚¢ó‹µ‚ÍŽg‚¢ŽÌ‚ẴR[ƒh‚ð‘‚Žž‚É‚È‚é
ŽÀÛAŽÀŒ±“I‚ȃR[ƒh‚ð‘‚‚Æ‚«‚ÍJavaScript‚ŃTƒNƒb‚Æ‘‚¢‚Ä‚é
Œ^‚ðŽw’è‚·‚é‚Ì‚ÍŽÀs‘¬“x‚Ì‚½‚ß‚¾‚ÆŽv‚Á‚Ä‚Ü‚µ‚½‚ªˆá‚¤‚ñ‚Å‚·‚ËB
ŒÂl‚ÅA1ƒtƒ@ƒCƒ‹A2, 300s’ö“x‚̃Iƒ‚ƒ`ƒƒ‚µ‚©‘‚©‚È‚¢“z‚É‚Í‚¢‚ç‚È‚¢‚©‚à‚µ‚ê‚ñ‚È
•¡”l‚ÅA2ƒtƒ@ƒCƒ‹ˆÈã‚Ì‚Ü‚Æ‚à‚ȃR[ƒh‘‚‚È‚çAŒ^‚Í•K{
u‘S‚Ä‚Ìfunction‚ª‰½‚©‚ðˆø”‚É‚Æ‚Á‚ĉ½‚©‚ð•Ô‚µ‚Ü‚·B‚»‚Ìw‰½‚©x‚̓R[ƒh‚ð“Ç‚Ü‚È‚¢‚Æ‚í‚©‚è‚Ü‚¹‚ñv
‚¶‚ᢂ邾‚ë
•¡”l‚Å‚àˆê‚ˆê‚Š֔’è‹`‚ðŠm‚肵‚Ä
ƒRƒƒ“ƒg‚ðŽc‚¹‚Όォ‚猩•Ô‚µ‚Ä‚à‚í‚©‚è‚»‚¤‚È‹C‚ª‚·‚é‚Ì‚Í
Ž„‚ª‚Ü‚¾–¢n‚È‚ñ‚Å‚·‚ËB
3ƒ–ŒŽ‘O‚ÌŽ©•ª‚Í‘¼l
web‚̂悤‚ɃŠƒŠ[ƒXŒã‚Ƀƒ“ƒe‚·‚é‰Â”\«‚ª‚ ‚é‚È‚çŠmŽÀ‚ɉߋŽ‚ÌŽ©•ª‚ð¦‚Þ‚¾‚낤
>>512
‚Å‚à‚»‚̃Rƒƒ“ƒgAl‚É‚æ‚Á‚Ä‘‚«•ûƒoƒ‰ƒoƒ‰‚¾‚µA‚»‚Ì’Ê‚è‚ÉŽÀ‘•EŽg—p‚³‚ê‚Ä‚¢‚é‚©‚í‚©‚ç‚È‚¢‚æ‚Ë
‚»‚̃Rƒƒ“ƒg‚ª‹KŠi‰»‚³‚ê‚Ä‚¢‚ÄA‚»‚Ì’Ê‚è‚ÉŽÀ‘•EŽg—p‚³‚ê‚Ä‚¢‚邱‚Æ‚ð•ÛØ‚µ‚Ä‚‚ê‚é‚Ì‚ªTypeScript‚Æ‚Å‚àŽv‚¦ ‚í‚©‚è‚Ü‚µ‚½BTypeScript‚̕׋‚ð‚µ‚Ä‚Ý‚Ü‚·B
ƒoƒbƒN‚É‚ÍMicrosoft‚ÆGoogle‚ª‚‚¢‚Ä‚é‚Ý‚½‚¢‚Å‚·‚Ì‚Å
ˆÀS‚µ‚ÄŠwK‚µ‚Ä‚Ý‚Ü‚·B
‚¹‚â
‚Ç‚±‚Ì”n‚Ìœ‚Æ‚à‚µ‚ê‚ñƒoƒJ‚Å‚Í‚È‚
Microsoft‚ÆGoogle‚Ì“VË‚½‚¿‚ðM‚¶‚ë
Œ^î•ñ‚É‚æ‚é•âŠ®‚Ȃǂ̃GƒfƒBƒ^‚ÌŽx‰‡‹@”\‚ª‚È‚¢‚Æ‘‚¯‚È‚¢‘Ì‚É‚È‚Á‚Ä‚µ‚Ü‚Á‚½c
>>502
‚±‚ꂳ–³’ƒ‹ê’ƒ‚ȃR[ƒh‘‚¢‚Ä‚él‚ªƒLƒŒƒC‚ȃR[ƒh‚©‚¯‚é‚悤‚É‚È‚é‚Á‚Ä“_‚ÅTS‚Á‚Ä‘f°‚炵‚¢‚ÆŽv‚¤ ¡“ú‚܂ŃGƒ‰[‚ª‚Å‚È‚¯‚ê‚΂ǂñ‚ȃR[ƒh‚Å‚à‚¢‚¢‚ÆŽv‚Á‚Ä‚Ü‚µ‚½B
ÅI“I‚É‚Í‚»‚¤‚¾‚æ
“¯‚¶“®‚«‚ð‚·‚é‚Ȃ烆[ƒU[‚É‚Í‚Ç‚ñ‚ȃR[ƒh‚à“¯‚¶
ŠJ”‘¤‚©‚猩‚Ä‚Ç‚¤‚©H‚Á‚Ä‚¾‚¯
ŠJ”‘¤‚Ì—§ê‚Ål‚¦‚é‚ÆTypeScript‚ª•K—v‚É‚È‚é‚ñ‚Å‚·‚ËB
>>501
‚È‚ñ‚©cJavascript‚â‚Á‚Ä‚él’B‚Á‚Ä‚±‚ê‚‚ç‚¢‚̃Œƒxƒ‹‚È‚ñ‚¾‚æ‚Èc
¡‚©‚çŽn‚ß‚é‚ ‚È‚½‚Í‚Æ‚à‚©‚‚Æ‚µ‚ÄA‚»‚̃AƒhƒoƒCƒX‚µ‚Ä‚‚ꂽ‚¨—F’B‚̃Œƒxƒ‹‚à‚½‚©‚ª‚µ‚ê‚Ä‚»‚¤B Python‚È‚ñ‚©‚à‚Á‚ƂЂǂ¢‚¼
‚½‚¾F‚ñ‚ȃŒƒxƒ‹‚Ìl‚ª‚¢‚é‚Æ‚¢‚¤‚Ì‚ÍV‚µ‚¢l‚ª“ü‚Á‚Ä‚«‚Ä‚¢‚éØ‹’‚Å‚à‚ ‚é‚Ì‚ÅAŠ½Œ}‚·‚ׂ«‚±‚Æ‚Å‚à‚ ‚é
’N‚Å‚àʼn‚͉SŽÒ‚È‚ñ‚¾‚µ‚³
‹ZpƒuƒƒO“™‚ÅŒöŠJ‚³‚ê‚Ä‚¢‚éTypeScript‚ȃR[ƒh‚Ì•iŽ¿‚Ì•½‹Ï‚ÍJavaScript‚Ì‚»‚ê‚Æ”ä‚ׂĂ‚¢B‚»‚¤‚¢‚¤ˆÓ–¡‚Å‚àŽg‚¤‰¿’l‚ª‚ ‚éB
‚à‚¿‚ë‚ñ—áŠO‚Í‚ ‚邯‚Ç‚Ë
>>521
ŠJ”ŠÂ‹«‚ŃŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO‹@”\‚Ì
«”\‚É’–Úo—ˆ‚é‚®‚ç‚¢‚É‚È‚è‚Ü‚µ‚傤I javascript‚ÌŒ¾ŒêŽd—l‚Å‚Í
‚Ü‚Æ‚à‚È•¨‚Íì‚ê‚Ü‚¹‚ñ‚Ì‚ÅB
>>524
‚»‚ê‚ÍTypeScript‚ÌÌ—p‚É‚æ‚Á‚Ä•iŽ¿‚ªŒüサ‚½‚Æ‚¢‚¤‚æ‚èAƒ^ƒCƒv—Ê‚âƒrƒ‹ƒh‚Ì•¡ŽG‚³‚Ì‘½‚Ì‘‘å‚ƈø‚«Š·‚¦‚ÉÓIŒ^•t‚¯‚ðŽæ‚é‚Æ‚¢‚¤
‹É‚߂ij‚µ‚¢‘I‘ð‚ª‚Å‚«‚邾‚¯‚Ì”\—Í‚ª‚ ‚éƒGƒ“ƒWƒjƒA‚ª‘‚¢‚½‚©‚炾‚낤‚Ë ‰´‚ÍC/C++‚©‚ç‚â‚Á‚Ă邯‚ÇAJavaScript‚ÅŒ^‚ª‚È‚‚Á‚Ä¢‚é‚Á‚ÄŽ–‚Í‚È‚¢‚È‚ B
‚½‚¾AŒ`–³‚µŒ¾Œê‚µ‚©‚â‚Á‚½‚±‚Æ‚È‚¢‚Ì‚È‚çATypeScript‚Ì•û‚ð‘E‚߂邯‚ÇB
i‚È‚¨‰´‚ͶJS‚µ‚©‚â‚Á‚Ä‚¨‚炸ATS‚ÍG‚Á‚Ä‚à‚¢‚È‚¢j
C‚Ý‚½‚¢‚Ƀƒ‚ƒŠ—̈æ‚ðŒµ–§‚É‹K’è‚·‚éˆ×‚È‚ç‚Æ‚à‚©‚A
JavaˆÈ~‚ÌŒ¾Œê‚ÌŒ^‚Á‚ÄAƒRƒ“ƒpƒCƒ‰‚Å—Ž‚Æ‚·ˆ×‚Å‚µ‚©‚È‚¢B
‚µ‚©‚àA“üŒû‚ÆoŒû‚Å“s‡2‰ñ‘‚¢‚ÄA‚»‚ꂪ‡‚Á‚Ä‚¢‚é‚©‚ðŠm”F‚·‚邾‚¯B
ŽÀÛA‚»‚ê‚Å‚àƒ^ƒCƒ|‚ð—Ž‚Æ‚¹‚é‚Ì‚Å‘å•Ï–ð‚É—§‚‚͎̂–ŽÀ‚¾‚¯‚ÇA
Œ^‚ðŠÔˆá‚Á‚ăGƒ‰[‚É‚È‚é‚È‚ñ‚ÄŽ–‚Í‚Ù‚Ú–³‚¢‚µA—L‚Á‚Ä‚àƒXƒ‚[ƒNƒeƒXƒg‚ÅŠmŽÀ‚É—Ž‚Æ‚¹‚éB
‚¾‚©‚çAŒ¾‚Á‚Ä‚µ‚Ü‚¦‚ÎAƒXƒ‚[ƒNƒeƒXƒg‚ª’Ê‚é‚Ü‚Å’»‚邾‚¯B
‚±‚Ì“_AŒ»ó‚ÌC++‚âRust‚Í‹ó‰ñ‚肵‚Ä‚ÄA
ƒRƒ“ƒpƒCƒ‰‚Å—Ž‚Æ‚·ˆ×‚ÉŒµ–§‚É‘‚•K—v‚ª‚ ‚èAŒ‹‰Ê“I‚ɂ₽‚牓‰ñ‚肵‚Ä‚½‚è‚·‚éB
‰´‚ªŽv‚¤‚É‚ ‚ê‚ÍŠ®‘S‚É–{––“]“|BƒR[ƒh\‘¢‚ª§ŒÀ‚ðŽó‚¯‚Ä‚Ç‚¤‚·‚é‚ñ‚¾‚æH
‚±‚Ì“_ATS‚Í–³‘Ê‚É‹C•‰‚킸A
Œ^‚̉¶Œb‚ðŽó‚¯‚‚ÂA–Ê“|‚É‚È‚ê‚ÎÈ—ªo—ˆ‚éAˆÊ‚¾‚©‚çŽó‚¯‚Ä‚¢‚é‚Ì‚¾‚ÆŽv‚¤B
‚½‚¾AŒ^‚̉¶Œb‚È‚ñ‚Äã‹L‚Ì’Ê‚èAƒXƒ‚[ƒNƒeƒXƒg‚ª’Ê‚é‚Ü‚Å‚Å‚µ‚©‚È‚¢B
‚»‚ÌŒã‚̃ƒ“ƒeƒiƒ“ƒX«‚ÍA“Á‚ɃIƒuƒWƒFƒNƒgŽwŒü(OOP)‚𳂵‚“K—po—ˆ‚Ä‚é‚©‚ªƒLƒ‚‚É‚È‚éB
‚Æ‚±‚낪AJS‚Å‚ÍOOP‚ÍŠw‚ׂȂ¢B‚±‚ê‚ÍTS‚à“¯‚¶‚¾‚ÆŽv‚¤B
Žü‚è‚̊‹«‚ª“‚·‚¬‚ÄA‰SŽÒ`’†‹‰ŽÒ‚É‚ÍOOP‚·‚郃Šƒbƒg‚ðŠ´‚¶‚ç‚ê‚È‚¢‚©‚çB
(HTML‚à“‚¢‚ªAƒlƒCƒeƒBƒuƒIƒuƒWƒFƒNƒg‚ðŠg’£‚µ‚Ä‚à‚ë‚‚É“®‚©‚È‚¢‚Ì‚à“‚¢j
Java‚â.NET‚Ý‚½‚¢‚É‚Ñ‚µ‚Á‚Æì‚Á‚Ä‚ ‚ê‚ÎA”äŠr“I¬‚³‚È‹K–Í‚Å‚à‰¶Œb‚ðŽó‚¯‚ç‚ê‚邪A
JS‚Í‚»‚ê‚ç‚æ‚è‚Í’f‘R‚ƒŒƒxƒ‹ƒvƒƒOƒ‰ƒ~ƒ“ƒO‚ÅA‚»‚Ì•ªs”‚à‚È‚Ï‚ÝA
‘å‘Ì‚É‚¨‚¢‚Ä‚»‚ñ‚È‚É‘å‹K–Í‚É‚à‚È‚ç‚È‚¢‚µAOOPƒKƒbƒcƒŠ‚â‚éˆÓ–¡‚à‚Ù‚Ú–³‚‘S‚ÄÏ‚ñ‚Å‚µ‚Ü‚¤B
‚¾‚©‚ç‚»‚ÌæA‹ï‘Ì“I‚ɂ̓\[ƒXƒR[ƒh‚ª10ks‚ð‰z‚¦‚é‚Ü‚Å‚ÍA
JS‚âTS‚ÍŠwK—pŒ¾Œê‚Æ‚µ‚Ä‚Í‚¢‚¢‚ÆŽv‚¤‚æB
‚»‚Ì•Ó‚É‚È‚Á‚Ä‚«‚ÄAˆê‚‚̌¾Œê‚µ‚©Žg‚¦‚È‚¢‚Á‚Ä‚Ì‚à‚Ù‚Ú–³‚¢‚©‚çAžX—J‚©‚à‚µ‚ê‚ñ‚ªB
OOP‚È‚ñ‚ÄŽg‚¦‚Ä“–‚½‚è‘OBOOP‚ð_Ši‰»‚µ‚Ä‚é“z‚ÅOOPˆÈŠO‚Ì‹Z–@‚àŽg‚¢‚±‚È‚¹‚Ă郄ƒcŒ©‚½‚±‚Æ‚È‚¢B
‚»‚ê‚ÉOOP‚̉¿’l‚̓R[ƒh‚̑嬂Ɉ˂ç‚È‚¢
‰´‚Í¢‚ç‚È‚¢‚©‚çJS‚Å‚¢‚¢˜_‚Í‘S‚ăSƒ~
‘z‘œ—Í‚ÌŒ‡‚¯‚½ˆø‚«‚±‚à‚èƒAƒXƒy‚ª‘‚¢‚½–Ï‘z
‚±‚ê‚̓Kƒ`
TSƒXƒŒ‚¾‚©‚çATSƒ}ƒ“ƒZ[AŒ^ƒ}ƒ“ƒZ[‚È“z‚Ì echo chamber ‚É‚È‚Á‚Ă邾‚¯‚¾‚¼‚Á‚ÄŽ–B
TS‚͈«‚¢Œ¾Œê‚Å‚à‚È‚¢‚ªA‚¨‘O‚ª‚çŽv‚Á‚Ä‚é‚Ù‚ÇJS‚à“‚‚È‚¢B
‚¾‚©‚甂 ‚éAltJSA–ܘ_TypeScript‚à‚»‚ê‚ÉŠÜ‚Ü‚ê‚邪A‚»‚ê‚Å‚àJS‚ðŽE‚µ‚«‚ê‚È‚¢B
Œ^‚ʼn¶ŒbŽó‚¯‚é‚Ì‚ÍAƒXƒ‚[ƒNƒeƒXƒg‚Ü‚Å‚¾‚ëB
‚»‚à‚»‚à•Ï”–¼‚Ý‚ê‚ÎŒ^‚È‚ñ‚ÄŽ©–¾‚¾‚µA‚»‚¤‚¶‚á‚È‚¢‚Ì‚ª–â‘èB
‚»‚µ‚ÄŠÖ”‚𬂳‚A‚Æ‚¢‚¤‚Ì‚ª‚Ù‚ÚÅ‹‚ÅA‚»‚à‚»‚à‹K–Í‚ª¬‚³‚¯‚ê‚Εϔ‚ÌŒ^‚ª•ª‚©‚ç‚È‚¢‚È‚ñ‚ÄŽ–‚Í‚È‚¢B
Œ^‚ÉŽú‚í‚ê‚Ä‚é“z‚ÍAŒ^‚ÌæA‚‚܂èAŒ^‚ª—L‚낤‚ª‚È‚©‚낤‚ª‚Ç‚¤‚É‚à‚È‚ç‚È‚¢¢ŠE‚ªŒ©‚¦‚Ä‚È‚¢‚Ì‚¾‚ÆŽv‚¤‚æB
‚±‚̈Ӗ¡‚ÅRust‚àƒŠƒ\[ƒXƒŠ[ƒN‚ð‹C‚É‚µ‚·‚¬B‚»‚à‚»‚àƒŠ[ƒN‚È‚ñ‚Ä‚µ‚È‚¢‚µA–Ê“|‚È‚çʼn‚©‚çGCŽg‚¦‚΂¢‚¢‚¾‚¯B
TS‚Í‚±‚Ì•Ó•Ï‚É‹CŽæ‚Á‚Ä‚È‚¢‚©‚ç‚¢‚¢B
‚Ü‚ Ž©•ª‚̃R[ƒh‚¾‚¯‚ÅŠ®Œ‹‚·‚颊E‚ŕ‚¶‚±‚à‚Á‚Ă镪‚É‚Í‚»‚ê‚Å‚¢‚¢‚ñ‚¶‚á‚È‚¢
>>532
> ‚»‚à‚»‚à•Ï”–¼‚Ý‚ê‚ÎŒ^‚È‚ñ‚ÄŽ©–¾
ƒnƒ“ƒKƒŠƒAƒ“MŽÒ‚Ì•û‚Å‚·‚©H
‚±‚ñ‚È‚±‚Æ‚¢‚¤“z‚Ì‹vX‚ÉŒ©‚½‚í
> ‚»‚à‚»‚à‹K–Í‚ª¬‚³‚¯‚ê‚Εϔ‚ÌŒ^‚ª•ª‚©‚ç‚È‚¢‚È‚ñ‚ÄŽ–‚Í‚È‚¢
‚Ù‚ñ‚ÆŽ©•ª‚Ì“s‡‚Ì‚¢‚¢‘¤–Ê‚µ‚©Œ©‚¦‚Ä‚È‚¢‚æ‚È
‰´‚Í¢‚ç‚È‚¢‚©‚çJS‚Å‚¢‚¢˜_‚Í‘S‚ăSƒ~
‘z‘œ—Í‚ÌŒ‡‚¯‚½ˆø‚«‚±‚à‚èƒAƒXƒy‚ª‘‚¢‚½–Ï‘z
‚±‚Ì’Ê‚è‚⃓‚¯I >>530
OOP‚ð_Ši‰»‚µ‚Ä‚¢‚é“z‚ªƒSƒ~‚È‚Ì‚Í”F‚ß‚éBJava‚̘A’†‚ª“Á‚É‚»‚¤B
‚»‚µ‚ĉ´‚Í‚»‚¤‚¶‚á‚È‚¢B
‚½‚¾‚ÈADOM‚Æ‚©‚»‚Ì•Ó‚ª“‚‚ÄAOOP‚̉¶Œb‚𬂳‚¢ƒR[ƒh‚Å‚Í“¾‚ç‚ê‚È‚¢‚Ì‚ÍOOP‚ðŠw‚Ôã‚Å‚Í’É‚¢‚ÆŽv‚¤B
Java‚Ý‚½‚¢‚É‚½‚Á‚½50s‚̃R[ƒh‚ÉOOP‹‚¢‚Ä—]Œv‚ɈӖ¡•s–¾‚É‚È‚é‚Ì‚à–â‘肾‚ªA
Ž©ìƒR[ƒh‚Ì‚Ý‚ÅOOP‚̉¶Œb‚ªŽó‚¯‚ç‚ê‚é‚Ì‚Í3ks’ö“xˆÈã•K—v‚ÅA
‚»‚±‚Ü‚ÅOOP‚ðš—‚ê‚È‚¢‚Å‚¢‚é‚Ì‚à‚Ü‚½–â‘èB
³’¼A‚±‚±‚É‚¢‚邨‘O‚ç‚Ì”¼•ªˆÈã‚ÍOOP‚𳂵‚—‰ðo—ˆ‚Ä‚È‚¢‚ÆŽv‚¤‚æB
‚½‚¾A‚»‚ê‚Å‚à‘‚¯‚é‚Æ‚±‚낪—Ç‚¢‚Æ‚±‚ë‚È‚ñ‚¾‚ªB
OOP‚Í‘å‹K–̓R[ƒh‚Ì®—p‚Å‚ ‚Á‚ÄA‚»‚à‚»‚à‘å‹K–͉»‚µ‚È‚¢‚Ì‚È‚ç‚»‚ꂪ‘峋`‚¾B >>534
‚»‚ê‚Í‚»‚à‚»‚à“Ç‚Ý•û‚ðŠÔˆá‚Á‚Ä‚ñ‚¾‚æB
ŠÖ”‚È‚ñ‚Ä‘å‘Ì20s’ö“x‚¾‚µA–â‘è‚É‚È‚é‚É‚µ‚Ä‚àI/F‚¾‚¯B
‚½‚¾‚»‚êˆÈ‘O‚ÉA‰´‚̓TƒCƒg‚ÌmimnifyÏ‚Ý‚ÌJS‚Å‚àŠ„‚Æ“Ç‚ß‚Ä‚µ‚Ü‚¤‚±‚Æ‚É‹C‚¢‚Ä‚µ‚Ü‚Á‚½B
u–ó‚Ì•ª‚©‚ç‚È‚¢‚±‚Æ‚ð‚â‚Á‚Ä‚È‚¢‚±‚Æv‚ªd—v‚ÅA‚»‚¤‚¶‚á‚È‚¯‚ê‚Î’Ç‚¦‚é‚ñ‚¾‚æB
‚¾‚©‚çA‰SŽÒ‚̃R[ƒh‚Ù‚Ç“Ç‚ß‚È‚¢B‚±‚ê‚ÍŽ–ŽÀB >>536
¢ŠE’†‚̃vƒƒOƒ‰ƒ}[‚ªŠÖ”‚È‚ñ‚Ä‘å‘Ì20s’ö“x‚Å–ó‚Ì•ª‚©‚ç‚È‚¢‚±‚Æ‚ð‚â‚Á‚Ä‚È‚¢ƒR[ƒh‚ð‘‚¢‚Ä‚‚ê‚é—‘z‹½‚É‚¨Z‚Ü‚¢‚È‚Ì‚Å‚ ‚ê‚ÎATS‚Í‚¢‚ç‚È‚¢‚¾‚낤‚Ë >>537
‹t‚¾‚ëB‚»‚¤‚¢‚¤—‘z‹½‚ðì‚é‚悤‚É‚¨ŒÝ‚¢“w—Í‚·‚é‚ñ‚¾‚ëB
‚»‚µ‚ÄTS‚ÍJS‚æ‚è‚Í‚»‚ê‚ð–ÚŽw‚µ‚Ä‚¢‚é‚ÆŽv‚¤‚ªB
ŠÖ”‚ª20s‚Á‚Ä‚Ì‚ÍGoogle‚©npm‚̃R[ƒfƒBƒ“ƒOƒ‹[ƒ‹‚É—L‚Á‚½‚Í‚¸B
ƒR[ƒhƒŒƒrƒ…[‚·‚鎞‚Éuƒpƒƒ|‚P‰æ–Ê‚É“ü‚ç‚È‚¢‚悤‚ÈŠÖ”‚ð‘‚‚Èv‚¾‚Á‚½B
ŽÀÛA‚»‚±‚Ü‚Å’Z‚‚·‚ê‚ÎA–ó‚Ì•ª‚©‚ç‚È‚¢•¡ŽG‚È‚±‚Æ‚Ío—ˆ‚È‚‚È‚é‚©‚çAŠm‚©‚ÉŒø‚‚ñ‚¾‚æB TS ‚ÍA‚à‚Á‚ÆŒã‚Å‚æ‚¢
Ruby 3.0 ‚ÅŒ^„˜_‚ª“ü‚邱‚Æ‚É‚È‚Á‚½‚¯‚ÇAìŽÒ‚ÌMatz ‚ªA
Œ^‚ð“ü‚ê‚é‚Ɠ‚·‚¬‚ÄA‰SŽÒ‚ªŠÈ’P‚ɃvƒƒOƒ‰ƒ~ƒ“ƒO‚Å‚«‚È‚‚È‚é‚ÆŒ¾‚Á‚Ä‚½
Œ^‚̓vƒŒü‚«B
Œ^‚ª‚ ‚é‚ÆA‰SŽÒ‚Ìfirst choice ‚É‚È‚ç‚È‚¢
‚¢‚âŒ^‚ª‚ ‚é•û‚ªŠy‚â‚ëAƒKƒCƒh•t‚«‚â‚ÅH
ƒRƒ“ƒpƒCƒ‹ƒGƒ‰[‚ÅŒŸ’m‚Å‚«‚¸‚É“®‚©‚µ‚Ä‚Ý‚é‚Ü‚Å‚í‚©‚ñ‚È‚¢‚Æ‚©c
‚‚¢‚Å‚ÉŒ¾‚Á‚Ä‚¨‚‚ÆA‘½•ªTS‚ÌuŒ^v‚Á‚Ä‚Ì‚ÍC++‚âRust‚̘A’†‚ÌuŒ^v‚Ì”Íáe‚É‚Í“ü‚ç‚È‚¢B
‘½•ªA˜A’†‚©‚ç‚·‚é‚ÆuŒ^“¹v‚©‚çŠO‚ê‚Ä‚éAŽ×“¹‚¾A‚ÆŒ©‚¦‚é‚ÆŽv‚¤B
‚»‚ê‚Í”FŽ¯‚µ‚Ä‚¨‚¢‚½•û‚ª‚¢‚¢B
‚½‚¾A‰´‚Í‚Þ‚µ‚ë‚»‚Ì•û‚ª‚¢‚¢‚ÆŽv‚Á‚Ä‚¢‚éB
C++‚̃eƒ“ƒvƒŒ[ƒg‚È‚ñ‚ÄA
u‚±‚ê‚Á‚ÄŒ^‚ª‚È‚‚ă_ƒbƒNƒ^ƒCƒv‚ł悯‚ê‚΂³‚ç‚Á‚Æ‘‚¢‚ÄI‚í‚è‚Å‚µ‚½‚æ‚ËHv‚Á‚Ä‚Ì‚ª‘½‚·‚¬‚éB
MS‚Í‚»‚±‚ç•ÓA‹É‚ß‚ÄŒ»ŽÀ“I‚Å‚¢‚¢B
‚ ‚ÆAŠù‚ÉŒ¾‚í‚ê‚Ä‚¢‚邪AJSer‚È‚ñ‚Ä‚±‚Ì’ö“xA‚Æ‚¢‚¤‚Ì‚Í“–‚½‚Á‚Ä‚¢‚éB
‹ï‘Ì“I‚ÉŒ¾‚¦‚ÎAŽÀ—Í‚ð‰ß‘å•]‰¿‚µ‚Ä‚¢‚銨ˆá‚¢”nŽ‚ª‘½‚¢B
‚½‚¾A‚»‚ê‚ÍŠEŒG‚̃Iƒ“ƒ{ƒ‚³‚ÆAŠyŸ‚³‚É‚æ‚Á‚Ä‚¢‚é‚Ì‚Å‚ ‚Á‚ÄAŠÂ‹«‚ð‹¤—L‚µ‚Ä‚¢‚éTS‚Å‚à“¯‚¶‚¾‚æB
‚Æ‚Í‚¢‚¦‰´‚Í‚±‚ê‚à—Ç‚¢‚±‚Æ‚¾‚ÆŽv‚Á‚Ä‚¢‚éB
‚‚܂è‹ZpƒŒƒxƒ‹‚ª’á‚‚Ä‚à’B¬o—ˆ‚邱‚Æ‚ªiŒ©‚½–Új‘å‚«‚¢‚킯‚¾‚©‚çB
‚¾‚©‚çC‚Æ‚©‚̘A’†‚ÍA‚È‚ñ‚ÅJSer‚ª‚ ‚ñ‚È‚É”nŽ‚łࢊE‚ª‰ñ‚é‚Ì‚©A
‚»‚ê‚͂‚܂èAŠEŒG‚̃VƒXƒeƒ€‚ªãŽè‚o—ˆ‚Ä‚é‚©‚ç‚È‚ñ‚¾‚¯‚ÇA‚»‚Ì•ÓŠw‚Ԃׂ«‚¾‚ÆŽv‚¤‚æB
>>539
“‚‚Í‚È‚ç‚È‚¢‚ªA”ÏŽG‚É‚Í‚È‚é‚ñ‚¾‚æB
‚»‚µ‚Ä‚»‚̔ώG‚³‚𗘉v‚ªã‰ñ‚éˆ×‚É‚ÍAÅ’áŒÀ‚ ‚é’ö“x‚Ì‹K–Í‚ª•K—v‚ÅA
‚»‚ê‚Íʼn‚Ìʼn‚̉SŽÒ‚ª‘‚ƒR[ƒh‚Ì‹K–Íi¸X100sj‚Å‚Í‘S‘R‘«‚è‚È‚¢B
‚¾‚©‚ç‚Á‚ăXƒNƒŠƒvƒgŒ¾Œê‚Å’²Žq‚Éæ‚Á‚ăKƒVƒKƒV‘‚¢‚½Œã‚ÉŒ^‚ª—~‚µ‚‚Ȃ鎞‚ÍŠm‚©‚É‚ ‚éB
‚»‚Ì•ÓA]—ˆ‚͑Ήžo—ˆ‚È‚©‚Á‚½‚ªATS‚Í‚»‚±‚ðãŽè‚‹d‚¢Žæ‚ꂽB JavaScript‚ÅÌ‘‚¢‚½3000s‚̃R[ƒh‚ðTypeScript‚É’¼‚µ‚Ä‚¢‚é‚ñ‚¾‚¯‚Ç
‚¢‚â‚Ü‚ Œ^‚Í•Ö—˜‚ÆŽv‚¦‚é‚¢‚ë‚ñ‚È”Œ©‚ª‚ ‚Á‚½‚íGG
Œ»Ý‚à‚Á‚Æ‚àl‹C‚Æ«—ˆ«‚ª‚ ‚Á‚ÄÅ‹‚ÆŒ¾‚í‚ê‚é
Python‚ÉŒ^‚ª‚È‚¢‚Ì‚Í‚Ç‚¤‚¢‚¤——R‚È‚ñ‚Å‚µ‚傤‚©H
ƒpƒCƒ\ƒ“‚̓Nƒ‰ƒX‚ÍŽg‚¦‚é‚悤‚Å‚·‚Ë
>>545
Python‚ªŽó‚¯‚Ä‚¢‚é‚Ì‚ÍA”nŽ‚Å‚à‘‚¯‚é‚©‚çB‚±‚ê‚És‚«‚éB
C‚¾‚ÆAPC‚Ì•¨—“I\‘¢‚ð‚ ‚é’ö“x’m‚Á‚Ä‚È‚¢‚Æ—‰ð‚µ‚É‚‚¢–Ê‚ª‚ ‚é‚©‚çB
‚½‚¾APython‚ª«—ˆ«‚ª‚ ‚é‚©‚Í‹^–₾‚ÆŽv‚¤B
Žg‚í‚ꑱ‚¯‚é‚Æ‚¢‚¤ˆÓ–¡‚Å‚ÍŠmŽÀ‚¾‚ªAƒvƒƒOƒ‰ƒ}‚ð–ÚŽw‚·‚Ì‚É‚¢‚¢‚©H‚ÆŒ¾‚í‚ê‚é‚Æ”÷–B
‰´‚ÍPython‚â‚Á‚Ä‚È‚¢‚ªAÅ‹ß‚©‚¶‚낤‚Æ‚µ‚ÄAŽ~‚ß‚½B
String.replace(regexp)‚ª‚È‚‚ÄARegExp(str)‚µ‚©‚È‚A‚ ‚ ‚±‚è‚á‘Ê–Ú‚¾A‚ÆŽv‚Á‚½B
‚È‚é‚Ù‚ÇPython‚ł̓Nƒ\ƒR[ƒh‚µ‚©‘‚¯‚È‚¢A‚Æ‚¢‚¤‚Ì‚Í”[“¾‚¾B
‚µ‚©‚à3.0‚É‚È‚Á‚Ä‚¸‚¢‚Ô‚ñŒo‚‚̂ÉA‚¦H‚Ü‚¾‚±‚ñ‚ÈŠ‚ņ‚ß‚Ä‚é‚ÌH‚Ý‚½‚¢‚ȧŒÀŽ–€‘½‚·‚¬B
‚½‚¾‚Ü‚ A–¾‚ç‚©‚ÉŒN‚Í‚»‚êˆÈ‘O‚È‚Ì‚¾‚©‚çAƒOƒ_ƒOƒ_Œ¾‚킸‚É‚³‚Á‚³‚ÆŽn‚ß‚é‚ׂ«‚¾‚æB
ŒN‚̃Œƒxƒ‹‚È‚çATS‚Å‚àJS‚Å‚àPython‚Å‚à‚Ç‚ê‚Å‚à‚¢‚¢‚ÆŽv‚¤‚æB
Python‚̃Nƒ\‚³‚ª•ª‚©‚é‚悤‚É‚È‚é‚Ü‚Å‚É2”N‚Ù‚Ç‚Í‚©‚©‚邾‚낤‚µB >>546
ƒNƒ‰ƒX‚ªŽg‚¦‚éƒIƒuƒWƒFƒNƒgŽwŒü‚ªo—ˆ‚éA‚Æ‚¢‚¤ˆÓ–¡‚Å‚ÍA
ŋ߂̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Å‚»‚à‚»‚àOOPo—ˆ‚È‚¢‚à‚Ì‚Í‘¶Ý‚µ‚È‚¢B
‚»‚ê‚Ù‚Ç‚Ü‚Å‚ÉOOP‚Í”F‚ß‚ç‚ꂽ‘¶Ý‚¾‚ÆŒ¾‚¤‚±‚ÆB
ƒ‰ƒ€ƒ_‚à“¯—l‚¾‚ªBi‚È‚¨Python‚̃‰ƒ€ƒ_‚ɂͧŒÀ‚ ‚èj
‚¾‚©‚çÅ‹ß‚ÌŒ¾Œê‚Í‚Ç‚ê‚à‚±‚ê‚à“¯‚¶‚¾I‚ÆŒ¾‚í‚ê‚Ä‚¢‚ÄAŽÀÛ‚»‚¤‚È‚Ì‚¾‚ªA
Š¸‚¦‚ĈႤŒ¾Œê‚ðI‚Æ‚â‚Á‚½‚Ì‚ªGoB
‚½‚¾‚µGo‚Í•Ê•ûŒü‚É‚©‚Ȃ蕳‚Ȃ̂ʼnSŽÒ‚ÍŽ~‚ß‚½•û‚ª‚¢‚¢Bi‚ÆŽv‚¤j
‚½‚¾AŽÀÛ‚ÍGo‚àŒ‹\‰SŽÒŽó‚¯‚µ‚Ä‚¢‚éB“Á‚ÉŒ`–³‚µƒXƒNƒŠƒvƒgŒ¾Œêオ‚è‚É‚ÍB Python‚Í ‹@ŠBŠwKŠÖ˜A‚̃‰ƒCƒuƒ‰ƒŠ‚ª[ŽÀ‚µ‚Ä‚¢‚Ä Å‹‚Ì’nˆÊ‚Í10”NŒã‚à20”NŒã‚à‚¨‚»‚ç‚•Ï‚í‚ç‚È‚¢‚¾‚낤 ‚ƃvƒƒOƒ‰ƒ~ƒ“ƒO‚ÉÚ‚µ‚¢’m‚臂¢‚ªŒ¾‚Á‚Ä‚Ü‚µ‚½B ƒ}ƒVƒ“ƒXƒyƒbƒN‚àオ‚Á‚Ä‚«‚Ä‚¢‚é‚Ì‚Å Python ‚̂悤‚ȃXƒNƒŠƒvƒgŒ¾Œê‚Å‚à \•ª‚ÉŽÀs‘¬“x‚ª”Šö‚Å‚«‰vX Žù—v‚ªL‚Ñ‚é‰Â”\«‚ª‚‚¢‚Æ•·‚«‚Ü‚µ‚½‚ªB
>>545
mypy‚Æ‚¢‚¤‚à‚Ì‚ª‚ ‚Á‚Ä‚¾‚È >>549
‚È‚ç‚»‚Ì’m‚臂¢‚É•·‚¯‚æB‚½‚¾‚»‚¢‚‚̓wƒ{‚¾‚ÆŽv‚¤‚ªB
Python‚ª‹‚¢‚̂̓‰ƒCƒuƒ‰ƒŠ‚ª‘µ‚Á‚Ä‚¢‚é‚©‚炾‚ªA¡‚Ì‚Æ‚±‚ëŽÀs‘¬“x‚ª’v–½“I‚É’x‚¢B
‚»‚ê‚ÍCPU‚âGPU‚Ì«”\Œüã’ö“x‚ł͉½‚Æ‚à‚È‚ç‚È‚¢B
‹@ŠBŠwK‚Ȃ猋‹Ç‚Ì‚Æ‚±‚ë‚͉½‰ñ‰ñ‚¹‚é‚©‚ªŸ•‰‚ÅAC”ä80-800”{’x‚¢‚Ì‚¾‚©‚ç˜b‚É‚È‚ç‚È‚¢B
‚¾‚©‚çCython‚È‚ñ‚Ä•¨‚ào‚Ä‚‚éB
‚½‚¾‚µƒAƒ‹ƒSƒŠƒYƒ€‚ð•p”É‚É‘‚«Š·‚¦‚é‚Æ‚È‚é‚ƈႤB
‚¿‚á‚Á‚¿‚á‚Æ‘‚«Š·‚¦A–é—¬‚µ‚Ä’©Œ‹‰Ê‚ð‰ñŽûA—[•û‚܂łɃvƒƒOƒ‰ƒ€‚ð•ÏX‚µ‚Ä‚Ü‚½–é—¬‚·A
‚Æ‚¢‚¤ŒJ‚è•Ô‚µ‚È‚çAuV‚µ‚¢ƒvƒƒOƒ‰ƒ€‚ª‚¢‚Âo—ˆ‚é‚©v‚ªŸ•‰‚Æ‚È‚èA“–‘RƒXƒNƒŠƒvƒgŒ¾Œê‚Ì•û‚ª—L—˜‚¾B
‚½‚¾A‚±‚ꂪo—ˆ‚éŠw¶‚È‚ñ‚Ä‚È‚©‚È‚©‚¢‚È‚¢‚ÆŽv‚¤‚µA‚»‚±‚Ü‚Ås‚‚̂Ȃ瑽•ªC‚à•’Ê‚ÉŽg‚¦‚éB
‚»‚à‚»‚à‹@ŠBŠwK‚È‚ç‚»‚ñ‚ȂɃAƒ‹ƒSƒŠƒYƒ€‚à•Ï‚¦‚È‚¢‚Í‚¸‚¾‚µB
‚¾‚©‚ç¡‚Å‚àƒKƒ`‚ÌŒvŽZ‹@HŠw‰È‚Å‚ÍC‚à‚â‚Á‚Ă邾‚ëB
C‚¾‚Æ1ŽžŠÔ‚ÅŒ‹‰Ê‚ªo‚é‚Ì‚ÉPython‚¾‚Æ3“ú‚©‚©‚è‚Ü‚·A‚Å‚ÍŒ¤‹†‚Ìi’»‚à‘S‘Rˆá‚Á‚Ä‚µ‚Ü‚¤B
‚¾‚©‚ç—p“r‚ɇ‚킹‚ÄŽg‚¢•ª‚¯‚邱‚Æ‚ª•K—v‚ÅA
‚Í‚Á‚«‚茾‚Á‚ÄC‚à‘債‚ē‚‚à‚È‚¢‚©‚ç‚»‚¤‚¢‚¤“z“™‚ÍC‚ðʼn‚©‚çŠw‚Ԃ悤‚É‚È‚Á‚Ä‚éB
Python‚âRubyŠEŒG‚ª‚‘¬‰»‚ð–ÚŽw‚³‚È‚¢‚͉̂´‚É‚ÍŠ®‘S‚É‹^–₾B
‰½‚¾‚©‚ñ‚¾‚Å¡Œã‚Æ‚à‘¬“x‚Íd—v‚Å‚ ‚èA³‹`‚¾B
Ruby‚È‚ñ‚ÄŽ€‚É‚©‚©‚Á‚Ă邪AJS‚Æ“¯’ö“x‚Ì‘¬“x‚ª“¾‚ç‚ê‚ê‚ÎA•œŠˆ‚·‚é‚Æ‚àŽv‚Á‚Ä‚¢‚éB
‚½‚¾AMatz‚à‚»‚ÌŽü‚è‚à‚»‚ê‚ð‚µ‚æ‚¤‚Æ‚µ‚È‚¢‚ñ‚¾‚ÈBƒNƒ\Œ¾Œê‚È‚ñ‚Ä‚à‚¤—v‚ç‚È‚¢‚Ì‚ÉB
TS‚Í‚»‚Ì“_AJS‚ÌŽÀs‘¬“x‚ÆAƒXƒNƒŠƒvƒgŒ¾Œê‚ÌŽã“_A
u’²Žqæ‚Á‚Ä‘‚¢‚Ä‚½‚çƒOƒ_ƒOƒ_‚É‚È‚Á‚Ä‚«‚ă„ƒoƒC‚Á‚·v‚ðŒ^•t‰Á‚É‚æ‚葽‚͊ɘao—ˆ‚éA‚Æ‚¢‚¤“_‚Å‚©‚È‚è—§‚¿ˆÊ’u‚Í‚¢‚¢B
‚µ‚©‚àJS‚à¡‚Ì‚Æ‚±‚뎀‚ÊŠ´‚¶‚Í‚È‚¢‚©‚çATS‚à–ܘ_Ž€‚È‚È‚¢B
ˆê”Ê“I‚É‚ÍJSer‚ÍŽŸ‘æ‚ÉTSer‚É‚È‚Á‚Ä‚¢‚‚ÆŒ©‚ç‚ê‚Ä‚¢‚邪A‚±‚ê‚àŠT‚˳‚µ‚¢‚¾‚낤B
Šm‚©‚ÉTS‚Í‘Ê–Ú‚È“_‚ª‚È‚¢B
iŠEŒG‚Ì‘Ê–Ú‚È“_‚ðJS‚©‚烂ƒ‚Ɏ󂯌p‚¢‚Å‚¢‚邪j Œ^–³‚µ•³Œ¾Œê‚ÍŽ€‚ ‚é‚Ì‚Ý
Œ^„˜_‚ŃXƒ}[ƒg‚ÉŒ^ƒTƒ|[ƒg‚ðŽó‚¯‚é‚Ì‚ª¡‚̃gƒŒƒ“ƒh‚¾‚æ
Ž¿–â‚Å‚·‚ª
interface IPoint {
@x: number;
@y: number;
}
‚ª‚ ‚é‚Æ‚µ‚ÄAi—Ⴆ‚Îjˆê’v”»’èŠÖ”‚ð‘‚ê‡A
function isequal(p1: IPoint, p2: IPoint) { return (p1.x == p2.y && p1.y == y2.y); }
function isequal<T extends IPoint>(p1: T, p2: T) { return (p1.x == p2.y && p1.y == y2.y); }
‚Í‚Ç‚Á‚¿‚ª—Ç‚¢‚ÌH
‚Ç‚Á‚¿‚àƒvƒƒpƒeƒB[{ x: number, y: number }‚ðŽ‚”CˆÓ‚̃IƒuƒWƒFƒNƒg‚ðŽó‚¯“ü‚ê‚é‚Ì‚Å“¯“™‚ÉŒ©‚¦‚Ü‚ÂA
–ß‚è’l‚ð–Y‚ꂽorz
: boolean
Œ^„˜_‚Á‚Ä•Ö—˜‚Å‚·‚æ‚ËAAA
YouTube ‚Å—L–¼‚ÈŽGHŒnƒGƒ“ƒWƒjƒAEKENTA ‚ÍA
‰SŽÒ‚ªi‚Þ“¹‚ðAƒT[ƒo[‘¤Œ¾Œê‚ÌRuby ¨ Go ‚ð‰¤“¹‚Æ‚µ‚Ä‚é
Python, PHP, JavaScript ‚È‚Ç‚ðâ‘΂Ɍ¾‚í‚È‚¢
‰SŽÒ‚Ìfirst choice ‚Æ‚µ‚Ă͓‚·‚¬‚éB
ÁÜŠm—¦‚ª‚‚·‚¬‚é
‚½‚¾”N––‚ÉARuby 3.0 ‚ÅŒ^„˜_‚ª“ü‚é‚©‚çA
KENTA ‚àA‚±‚Ì•ûj‚ð•Ï‚¦‚é‚©‚à’m‚ê‚È‚¢
‘厖Œ–u”I
Ruby on Rails ‚É—Š‚Á‚Ä‚¢‚éA‚·‚ׂĂ̊wZ‚Ì•ûj‚ª•Ï‚í‚Á‚Ä‚µ‚Ü‚¤
‚½‚¾Afirst choice ‚ªGo ‚ÆŒ¾‚¤‚Ì‚ÍAâ‘΂ɖ³—
>>554
‚±‚Ìꇂ͑½•ª“¯“™‚Ȃ̂ŃVƒ“ƒvƒ‹‚È‘OŽÒ‚Å—Ç‚¢
ŒãŽÒ‚ÍT‚𑼂̉ӊi–ß‚è’l‚âƒR[ƒ‹ƒoƒbƒNŠÖ”‚̈ø”‚È‚Çj‚Å‚àŽg‚¤ê‡‚É“K‚µ‚Ä‚¢‚邱‚Æ‚ª‚ ‚é
—Ⴆ‚Î
function double<T extends IPoint>(p: T): T {
p.x *= 2;
p.y *= 2;
return p;
}
‚Æ‚©
function check<T extends IPoint>(p: T, validator: (p: T) => boolean): void {
if (!validator(p)) { throw new Error('...'); }
}
‚Æ‚©
‚½‚¾‚µ‚±‚ê‚ç‚Ìꇂłà•K‚¸‚µ‚àextends‚ª“K‚µ‚Ä‚¢‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚Ì‚Å’ˆÓi“Á‚Éã‚Ì—á‚Í‚©‚È‚è“K“–‚È‚Ì‚Åj Python‚ÍŒ^‚ð‘‚¢‚Ä‚àƒCƒ“ƒ^ƒvƒŠƒ^‚ª‚»‚ê‚𖳎‹‚µ‚ÄŽÀs‚µ‚Ä‚‚ê‚é
‚‘¬‚ÉŽÀs‚µ‚½‚¯‚ê‚ÎPyPyŽg‚¦‚΃lƒCƒeƒBƒuƒR[ƒh‚É‹ß‚¢‘¬“x‚ÅŽÀso—ˆ‚邵mypy‚ÅŒ^ƒ`ƒFƒbƒN‚ào—ˆ‚é
JavaScript‚ÅŒ^‚ð‘‚‚Æ’P‚É\•¶ƒGƒ‰[‚ɂȂ邾‚¯‚¾‚ªA‚»‚Ì“à–³Ž‹‚µ‚ÄŽÀs‚µ‚Ä‚‚ê‚é—l‚ɂȂ邾‚낤
‚»‚¤‚È‚Á‚½‚çTypeScript‚Í—v‚ç‚È‚‚È‚é
Python‚Ý‚½‚¢‚É“®“IŒ^Œ¾Œê‚ÉŒ^ƒAƒmƒe[ƒVƒ‡ƒ“‚ð’ljÁ‚·‚鎖‚ªŽå—¬‚ɂȂ邾‚낤
UnionŒ^‚Í“®“IŒ^‚¾‚©‚ço—ˆ‚鎖‚ÅAŠ®‘S‚ÉÓIŒ^‚É‚·‚é‚ÆC++‚Ý‚½‚¢‚É‚È‚Á‚Ä‚µ‚Ü‚¤
“®“IŒ^{Œ^ƒAƒmƒe[ƒVƒ‡ƒ“‚Í—Ç‚¢‚Æ‚±Žæ‚è‚ÅAƒvƒ‚©‚ç‰SŽÒ‚Ü‚ÅŠF‚ª–ž‘«o—ˆ‚é
Python‚Í10”N‘O‚É‚â‚Á‚½‚Æ‚«‚ͦ‚¢Œ¾Œê‹@”\‚¾‚ÆŽv‚Á‚½‚¯‚ÇA‚»‚ê‚©‚ç‚ ‚ñ‚Ü‚èi‰»‚µ‚È‚‚Ä¡‚ÍJS‚É‚·‚猾Œê‹@”\“I‚É‚Í—ò‚Á‚Ä‚éBPython‚Ì—Ç‚¢‚Æ‚±‘¼‚ÌŒ¾Œê‚àŽæ‚èž‚ñ‚¶‚á‚Á‚½‚©‚ç‚ËB
‚Å‚à‚»‚ê‚ƃ‰ƒCƒuƒ‰ƒŠ‚ª[ŽÀ‚µ‚Ä‚é‚Á‚Ä‚Ì‚Í•Ê–â‘è‚ÅA‚±‚̃‰ƒCƒuƒ‰ƒŠ‚Ì[ŽÀ‚Á‚Ղ肪JS|TS‚É‚à‚ ‚Á‚½‚ç“V‰ºŽæ‚ê‚é‚Ì‚É‚È‚Ÿ‚ÆŽv‚¤B
‹@ŠBŠwK‚̓‰ƒCƒuƒ‰ƒŠ‚ÌÅ“K‰»‚ªƒLƒ‚‚ÅŒ¾Œê‚Ì‘¬“x‚È‚ñ‚Ä‚Ù‚Æ‚ñ‚ÇŠÖŒW‚È‚¢‚µ
‚È‚ñ‚Ç‚àƒR[ƒh‚Ì‘‚«Š·‚¦‚ª•K—v‚È‹@ŠBŠwK‚É‚¨‚¢‚Ä
Python‚̂悤‚ȉ“ǫ‚É‚·‚®‚êA‚È‚¢ƒR[ƒh‚ÅŽÀs‚Å‚«‚錾Œê‚Í‚ª•K—v•s‰ÂŒ‡‚È‚Ì‚æB
Cython‚ðŽg‚¦‚ÎŽÀs‘¬“x‚àC/C+{‚Æ•Ï‚í‚ç‚È‚¢‚µ‚ËB
JavaScript‚ÍTypeScript‚Æ‚µ‚Ķ‚«Žc‚é‚ÆŽv‚í‚ê‚éB
>>556
‚»‚ÌYouTube‚ÍPython‚ÆJavaScript‚Åì‚ç‚ê‚Ä‚¢‚é‚Æ‚¢‚¤”ç“÷ >>560
ŋ߂̉SŽÒ‚ª‚·‚®u‰´‚ª‚â‚Á‚Ă錾ŒêƒXƒQ[A‰´ƒXƒQ[v‚ȃ|ƒWƒVƒ‡ƒ“ƒg[ƒN‚É‘–‚é——R‚ª•ª‚©‚ç‚ñB
Python‚ª—Ç‚©‚낤‚ªˆ«‚©‚낤‚ªA‚¨‘O‚ÌŽÀÑ‚Å‚à‚È‚©‚낤‚ÉB
Œ‹‹Ç‚Ì‚Æ‚±‚ëAu››Œ¾ŒêƒXƒQ[v‚ð‚â‚Á‚Ä‚é“z‚ÍAu‘¼Œ¾Œê‚È‚ñ‚Äâ‘Ίw‚Ñ‚½‚‚È‚¢ƒ}ƒ“v‚Å‚ ‚Á‚ÄA
‚»‚ê‚𳓖‰»‚·‚éˆ×‚ÉŒ¾‚¢–ó‚ð‚µ‚Ä‚¢‚é‚悤‚É‚µ‚©Œ©‚¦‚ñB
‚»‚ê‚Í549‚Ìu’m‚臂¢v‚à“¯‚¶B
‚½‚¾>>554‚ª“TŒ^“I‚ÈuŒ^‚Ì–â‘è“_v‚ÅA
‹K–Í“I‚ÉuŒ©‚è‚ᕪ‚©‚邾‚ëv‚ÈꇂłàAŒ^‚ ‚茾Œê‚ÍŒ^‚ð‘‚‚±‚Æ‚ð‹§‚³‚êA
Œ‹‰Ê“I‚ɔώG‚ȃR[ƒh‚É‚È‚Á‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½B
‚»‚êAJS‚Å
function isEqualPoint(p1,p2) { return (p1.x === p2.x && p1.y === p2.y); }
‚¾‚Á‚½‚çA”Y‚Þ•K—v‚à‚È‚A‚»‚Ìæ‚É‚³‚Á‚³‚Æi‚ß‚Ä‚½‚¾‚ëA‚Æ‚¢‚¤˜bBi¦j
•’Ê‚Ì“ª‚µ‚Ä‚½‚炱‚ê‚Å\•ª‚¾B
‚¿‚È‚Ý‚Éiƒƒ\ƒbƒh‚Å‚Í‚È‚¢ŠÖ”‚ÅjisEqual‚Í’Z‚·‚¬B
isEqualPoint‚Í‚¨‘O‚炪‘匙‚¢‚ȃnƒ“ƒKƒŠƒAƒ“‚¾‚ªA‚Ç‚¤Œ©‚Ä‚àPoint‚ðŽó‚¯Žæ‚é‘O’ñ‚ÅA‚»‚¤‚¶‚á‚È‚«‚áƒGƒ‰[‚¾‚Æ•ª‚©‚éB
‚»‚ê‚ðŒ^‚ð‘‚¢‚ăRƒ“ƒpƒCƒ‰‚É‚â‚点‚é‚Ì‚ªTS‚ÅA–Ú‚ÅŒ©‚Ä—Ž‚Æ‚·‚Ì‚ªƒnƒ“ƒKƒŠƒAƒ“B
‚½‚¾AƒR[ƒh‚̸“x‚ðã‚°‚½‚¢‚Ȃ畹—p‚·‚ׂ«‚ÅA
Œ`–³‚µ‚ÌisEqual‚Æ‚¢‚¤‚Ì‚Í.NET‚Ý‚½‚¢‚ÉisEqualƒCƒ“ƒ^ƒtƒF[ƒX‚ð‘S•”‚ÌŒ^‚ɑ΂µ‚Ä‹Ÿ‹‹‚µA
isEqual‚ðŽ‚Á‚Ä‚¢‚éŒ^‚Í‚±‚êŽg‚¦‚Ü‚·A‚Ä‚ÈŽ–‚ð‚â‚邽‚ß‚ÉŽg‚¤B
‚½‚¾‚±‚ê‚Í.NET‚Í¢ŠE‚Ì‘S‚Ä‚ªOOP‘O’ñ‚¾‚©‚ço—ˆ‚é‚Ì‚Å‚ ‚Á‚ÄAJSŠEŒG‚Å‚Í‚©‚È‚è–³—B
‚»‚µ‚Ä‚»‚êˆÈ‘O‚ÉAisEqual‚ÍPoint‚̃ƒ\ƒbƒh‚Æ‚µ‚ÄŽÀ‘•‚·‚ׂ«B
ƒƒ\ƒbƒh‚Å‚ ‚ê‚΂»‚à‚»‚àPointˆÈŠO‚ð—^‚¦‚悤‚ª‚È‚‚Ȃ邵AŒ©‚½–Ú‚àƒnƒ“ƒKƒŠƒAƒ““¯—l‚ɃGƒ‰[‚ðŒŸoo—ˆ‚éB
‚»‚µ‚ăCƒ“ƒ^ƒtƒF[ƒX‚Ö‚ÌŠg’£‚àŒ©‚¦‚Ä‚‚éB
‚Ç‚¤‚µ‚Ä‚à–ì—ÇŠÖ”‚É‚µ‚½‚¯‚ê‚ÎAƒnƒ“ƒKƒŠƒAƒ“‚É‚µ‚Ä‚¨‚•û‚ª–³“‚ÆŽv‚¤‚ªB
‚È‚¨OOP‚Ì–â‘è“_‚ͪ–{“I‚É‚±‚±‚ç•Ó‚ÅA
‚±‚Ì’ö“x‚Ì‚Ç‚¤‚Å‚à‚¢‚¢‹K–Í‚µ‚©‘‚¯‚È‚¢‰SŽÒ‚É‚à–³‘Ê‚É‚¢‚¿‚¢‚¿l‚¦‚邱‚Æ‚ð‹‚¢‚ÄŽè‚ðŽ~‚ß‚Ä‚µ‚Ü‚¤B
‚±‚̃Œƒxƒ‹‚È‚çƒOƒ_ƒOƒ_Œ¾‚킸‚ɉ½‚Æ‚Å‚à‘‚¢‚Ä‚Ç‚ñ‚Ç‚ñæ‚Éi‚ñ‚¾•û‚ª‚¢‚¢B
‚Ç‚¤‚¹¡‘‚¢‚Ä‚éƒR[ƒh‚È‚ñ‚ăSƒ~‚ÅAŒã‚©‚çŽg‚¦‚鎖‚Í‚È‚¢B ‚µ‰“‰ñ‚肵‚½‚ª˜b‚ð¦‚ÌŽž“_‚É–ß‚·‚ÆA
‚¾‚©‚çu‘S•”‚ɂ‚¢‚ÄŒ^‚𑂯v‚Æ‚¢‚¤‚Ì‚ÍX”ÏŽG‚ÅAŒ^‚ ‚茾Œê‚ÍŒ^„˜_‚ÅŒ^‚ð‘‚©‚È‚‚Ä—Ç‚¢•ûŒü‚É“®‚¢‚Ä‚éB
‹t‚ÉAŒ`–³‚µŒ¾Œê‚ÍŒ^‚ðƒAƒmƒe[ƒg‚·‚邱‚Æ‚ÅAƒRƒ“ƒpƒCƒ‹Žž‚É—Ž‚Æ‚¹‚é•ûŒü‚É“®‚¢‚Ä‚éB
Œ‹‰Ê“I‚ÉA‚Ç‚Á‚¿‚à“¯‚¶‚悤‚È󋵂ɂȂè‚‚‚ ‚éB
—Ž‚Æ‚µ‚Ç‚±‚ë‚Í‘½•ªAC#‚Ìuƒ[ƒJƒ‹‚ÍŒ^„˜_A‚»‚êˆÈŠO‚ÍŒ^‚𑂯v‚ª‚Ü‚ ‘Ó–‚ȃ‰ƒCƒ“‚È‚Ì‚¾‚낤B
‚¾‚©‚ç‰SŽÒ‚Å‚±‚̕ӂ̉–”~‚ª•ª‚©‚ç‚È‚¢‚Ì‚È‚çAC#‚©‚ç“ü‚é‚Ì‚à‚ ‚肾‚ÆŽv‚¤‚¯‚ÇB
Œ»ŽÀ“I‚Ƀoƒ‰ƒ“ƒX‚ªŽæ‚ꂽŽd—l‚É‚Í‚È‚Á‚Ä‚éB
>>561
JS‚ªŽæ‚èž‚ñ‚¾Python‚Ì—Ç‚¢Š‚Á‚ĉ½H
‚»‚ñ‚Ȃ̉Ž¨‚¾‚ªB
‚»‚à‚»‚àPython‚ª–J‚ß‚ç‚ê‚Ä‚é“_‚È‚ñ‚ă}ƒW‚ʼn½ˆê‚‚Ȃ¢‚ÆŽv‚¤‚ªB
i‚½‚¾‚µ‰´‚Í10”N‚àŽg‚Á‚Ä‚È‚¢‚Ì‚Å—ðŽj“IŒoˆÜ‚Í‚Ù‚Ú’m‚ç‚ñ‚ªj
JS|TS‚ª“V‰º‚ðŽæ‚éˆ×‚É•K—v‚È‚Ì‚Íu“¯Šúv‚¾‚æB
async‚Æ‚©‚¶‚á‚È‚‚ÄA•’Ê‚Ìu“¯Šúv‚Ì•û‚ª•ª‚©‚è‚â‚·‚¢‚µAŽÀÛƒXƒNƒŠƒvƒgŒ¾Œê‚ª’S“–‚·‚镪–ì‚Å‚Í‚Ù‚Ú‚»‚ê‚Å‚¢‚¢B
c10k–â‘è“™‚É‚Í”ñ“¯Šú‚ª—L—˜‚È‚Ì‚ÍŽ–ŽÀ‚¾‚ªAŒ©‚½–Ú‚Ì•ª‚©‚èˆÕ‚³‚Íu“¯Šúv‚Ì•û‚ª’f‘R‚¢‚¢B
u‚»‚êA“¯Šú‚¾‚Á‚½‚ç‚»‚à‚»‚à—‰ð‚·‚é•K—v‚·‚ç‚È‚‚ÄAã‚©‚燂ɎÀs‚³‚ê‚éA‚ÅÏ‚Ý‚Ü‚·‚æ‚ËHv‚ª‘½‚·‚¬‚éB
‚½‚¾Au”ñ“¯Šúv‚ÍÅ‘@‹³‚¾‚©‚çAu“¯Šúv‚ð“ü‚ê‚邱‚Æ‚Í‚È‚¢‚Ì‚¾‚낤‚¯‚Ç‚ËB
u“¯Šúv‚ª“ü‚ê‚ÎACPUƒŠƒ\[ƒX‚ªŒµ‚µ‚¢ƒT[ƒo‘¤‚ÌPHP/Ruby/i‚Ù‚Ú‚¢‚È‚¢‚ªjPython‚Ì”¼•ª‚Ù‚Ç‚ÍNode‚ɈÚs‚·‚邾‚낤B
(ŽÀÛAGo‚ª‚»‚ÌŠEŒG‚Å—¬s‚Á‚Ä‚é‚Ì‚àA‘債‚½ŽèŠÔ‚ð‚©‚¯‚¸‚ɉõ‘¬‚ª“¾‚ç‚ê‚é‚©‚ç‚Å‚ ‚Á‚Äj
‚Ü‚½A•’ʂ̃XƒNƒŠƒvƒg‹Æ–±A‚‚܂èPython‚ª– ‰„‚Á‚Ä‚¢‚镪–ì‚Å‚àA
Python“¯—l‚ÉŠÈ’P‚É‘‚¯A‘¬“x‚Í16”{‚È‚Ì‚¾‚©‚çA“–‘R•’iŽg‚¢‚·‚é“z‚ªo‚Ä‚‚éBi‚Æ‚¢‚¤‚©‰´‚ª‚»‚ê—~‚µ‚¢j
‚»‚¤‚·‚ê‚ÎAƒ‰ƒCƒuƒ‰ƒŠ‚à[ŽÀ‚µ‚Ä‚¢‚B
u“¯Šúv‚ª‚È‚¢‚©‚ç•’iŽg‚¢‚µ‚É‚‚¢‚Ì‚ª‚Æ‚É‚©‚–â‘èB
‹t‚ÉPython‚ÍŽÀs‘¬“x‚ª–â‘è‚ÅAŒ»ŽÀ“I‚È•¶‹å‚Í‚Ù‚Ú‚±‚ê‚És‚«‚éB
‚¾‚©‚ç”Þ“™‚ª‰½ŒÌ‚‘¬‰»‚ð–ÚŽw‚³‚È‚¢‚Ì‚©‚͉´‚É‚Í–{“–‚É“äB ‚±‚Ì‚¨‚Á‚³‚ñ’·•¶‘‚Š„‚É’mŽ¯ó‚¢‚È
>>563
‚ ‚êPython‚Åì‚ç‚ê‚Ä‚é‚©‚çi‰»‚ª’x‚¢‚ñ‚¾‚¼
ŠOŒü‚«‚É‚ÍPython‚Å–â‘è‚È‚¢‚Á‚Ä‹•Ù‚µ‚Ă邪Š®‘S‚É•‰Â‰»‚µ‚¿‚á‚Á‚Ä‚é
Python‚Åì‚Á‚½WebƒT[ƒrƒX‚ ‚é‚ ‚é Žž‘ã‚ɂ‚¢‚Ä‚¢‚¯‚È‚¢˜VŠQƒGƒ“ƒWƒjƒA‚ªC/C++‚ð•KŽ€‚É„‚µ‚Ä‚é‚悤‚ÉŽv‚¤‚Ì‚¾‚ª
>>566
󂢂Ƃ¢‚¤‚©ŒÂl or ¬‹K–ÍŠJ”‚µ‚©‚µ‚½‚±‚Æ‚È‚³‚»‚¤ Python‚Ì‘¬“x‚ª’x‚¢‚ÆŒ¾‚Á‚Ä‚é‚Ì‚ÍîŽã
C‚Å‘‚¢‚½ƒ‰ƒCƒuƒ‰ƒŠ‚Ɏ󂯓n‚¹‚ÎCŒ¾Œê‚Ì‘¬“x‚ÅŽÀs‚Å‚«‚邵
CythonŽg‚¦‚ÎPython‚̃R[ƒh‚Ù‚Ú‚»‚Ì‚Ü‚ÜCŒ¾Œê‚Ì‘¬“x‚ª‚Å‚é
Python‚Å¢‚é‚Ì‚ÍGUI‚‚ç‚¢‚¾‚ëH
Œp³‚ƃWƒFƒlƒŠƒNƒX‚ª–ðŠ„‚ª”í‚é—̈æ‚É‚¨‚¢‚Ä
TypeScript‚Å‚Í‚Ç‚Á‚¿‚Ì‘‚«•û‚ªƒƒWƒƒ[i‚à‚µ‚‚ÍŒø—¦“Ij‚Æ‚³‚ê‚Ä‚¢‚é‚Ì‚©‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å‚·„ƒI
>>557
ƒŒƒX‡dƒNƒXA
‚í‚©‚肽A ŽŸ‚ÌŽ¿–â‚È‚Ì‚Å‚·‚ªA
ƒ^ƒCƒvƒK[ƒh‚Æ‚©‘‚‚Æ‚«‚ɃNƒ‰ƒXi‚âƒnƒbƒVƒ…j‚ɃvƒƒpƒeƒB[‚ª—L‚é‚Ì‚©–³‚¢‚Ì‚©’²‚ׂé‚ÆŽv‚¤‚Ì‚Å‚·‚ª
‚‚¬‚Ì‚Ç‚Á‚¿‚Ì‘‚«•û‚ª—Ç‚³‚°H
@(1)@'someProperty' in foo
@(2) foo.someProperty != undefined
‚È‚ñ‚Æ‚È‚(2)‚Ì•û‚ª‘‚¢‚Ì‚Å‚Í‚È‚¢‚©A‚Æ‚¢‚¤‹C‚ª‚·‚é‚Ì‚Å‚·‚ª‹C‚Ì‚¹‚¢HH
>>570
‰´‚àC‚ÌDLL‚ðƒXƒNƒŠƒvƒgŒ¾Œê‚©‚çŒÄ‚ÔA‚Æ‚¢‚¤‚Ì‚ªŒ»ŽÀ“I‚È‰ð‚¾‚Æ‚ÍŽv‚¤B
‚½‚¾APython‚Ì–â‘è‚Í‚»‚±‚¶‚á‚È‚¢B
‰‰ŽZ‚ð•Ï‚¦‚½‚¢ê‡‚ÍŒ‹‹ÇC‚𑂉H–Ú‚É‚È‚é‚©‚çAŒ‹‹ÇC‚ào—ˆ‚È‚¢‚Æ‘Ê–ÚB
‚»‚µ‚ÄC‚ÍŽd—l‚ª¬‚³‚¢‚Ì‚ÅA–{‹C‚ų‚µ‚Šw‚ׂΊȒP‚È•”—Þ‚¾B
GUI‚Í¡‚ÍŒ»ŽÀ“I‚ÉHTML‚ªƒ_ƒ“ƒgƒc‚Å—Ç‚A‰½‚©‚牽‚Ü‚ÅWebƒAƒvƒŠ‰»‚µ‚Ä‚éB
‚È‚ç¡‚È‚çElectron‚Ì•û‚ª‘Š«‚ª‚¢‚¢B“–‘RJS/TSB
ƒT[ƒo—p“r‚ÅPythonŽg‚Á‚½‚ç‘å‘Ì‚Í‘¬“x‚Ì–â‘è‚Ƀuƒ`“–‚½‚邪A
‚±‚ê‚Íu‚¨‹CŠy‚É‘‚¯‚镪’x‚¢v‚Æ‚¢‚¤ƒXƒNƒŠƒvƒgŒ¾Œê‚Ì“Á—L‚Ì–â‘è‚Å‚ ‚èARuby‚à“¯—l‚ÅA‰ñ”ðŽè’i‚ª‚È‚¢B
(Node‚Ígoogle‚Ì“w—Í‚Å—áŠO“I‚ɈÙí‚É‘¬‚¢‚¾‚¯j
‚¾‚©‚çPython‚Íu‰½ˆê‚‚¢‚¢‚Æ‚±‚ë‚Í‚È‚¢‚ªA‰½‚àˆ«‚‚à‚È‚¢v‚Æ‚¢‚¤A‚ ‚éˆÓ–¡uâ‘ΓI‚È2”ÔŽèv‚¾B
‚¾‚©‚炱‚»uâ‘Α¼Œ¾Œê‚ðŠw‚Ñ‚½‚‚È‚¢ƒ}ƒ“v‚Í‚±‚ê‚ÉS‚èAƒ|ƒWƒVƒ‡ƒ“ƒg[ƒN‚ðŒJ‚è•Ô‚·B
‚½‚¾A¡Žž‚ÌŒ¾Œê‚È‚ñ‚Ä‚Ç‚ê‚àŽ—‚½‚悤‚È‚à‚Ì‚ÅAŽÀÛ‚»‚±‚ÉS‚é——R‚à‚È‚A•’Ê‚Ì“z‚͈ÕX‚ÆŒ¾Œê‚Ì•Ç‚È‚ñ‚Ä”ò‚щz‚¦‚Ä‚¢‚B
•’Ê‚Í‚±‚¿‚ç‚ð–ÚŽw‚·‚ׂ«‚¾‚ÆŽv‚¤‚¯‚ÇB
PHP‚àƒNƒ\‚ÆŒ¾‚í‚ê‚Ä‹v‚µ‚¢‚ªA‚¢‚Ü‚¾‚É– ‰„‚Á‚Ä‚¢‚é‚Ì‚ÍA‚ ‚Ì—p“r‚Å‚Íâ‘ΓI‚É•Ö—˜‚¾‚©‚çB
‚»‚ê‚ÍjQuery‚à“¯‚¶B >>572
–³—¿‘Š’kŠ‚¶‚á‚Ë‚¦‚ñ‚¾‚¼’²Žq‚Éæ‚é‚È
(2)‚É‚µ‚ë
(1)‚ÍŒ^‚Ì•ÛØ‚Ü‚Å‚µ‚Ä‚È‚¢‚©‚çÅŒã‚ÌŽè’i
‚ ‚Æinterface‚̓‰ƒCƒuƒ‰ƒŠ‚Ȃǔėp“I‚ȃR[ƒh‚ÉŽg‚¤‚à‚ÌA•’i‚Ítype‚ðŽg‚¦ ‚Ä‚¢‚¤‚©Ž©ŒÈ‰ðŒˆ‚µ‚Ü‚·‚½A
e: Event ‚ð e: MouseEvent ‚Æ‚µ‚Ĉµ‚Á‚Ä‚æ‚¢‚©iƒ_ƒEƒ“ƒLƒƒƒXƒg‰Â”\‚©j‚Ç‚¤‚©‚ð
Šm”F‚·‚é‚Æ‚«A(1)‚Ì‘‚«•û‚Å‚È‚¢‚Æ
MouseEvent‚É‚ ‚Á‚ÄEvent‚É–³‚¢ƒvƒƒpƒeƒB[
ie.offsetX‚âe.offsetYijj‚Ì—L–³‚Ì”»’肪‘‚¯‚Ü‚¹‚ñ‚ÊA
>>574
‹@ŠBŠwK‚̕׋‚µ‚Ä‚ÝB‰‰ŽZ‚âƒAƒ‹ƒSƒŠƒYƒ€‚È‚ñ‚Ä“ñ‚ÌŽŸ ŽO‚ÌŽŸ‚¾‚©‚çB
‚Æ‚É‚©‚‰½“x‚àƒR[ƒh‚ð‘‚«Š·‚¦‚ĂЂ½‚·‚çƒpƒ‰ƒ[ƒ^[‚Æ•Ï”‚Ì’²®ì‹Æ‚É‚È‚éB
Œ¾Œê‚ÌŽÀs‘¬“x‚æ‚èƒR[ƒh‚Ì‹Lq‘¬“x‚Ì•û‚ª‘厖‚É‚È‚éB
‚±‚ÌŽž‚Í‚¶‚ß‚ÄuPython‚³‚ñB‚È‚ß‚Ä‚Ä‚²‚ß‚ñ‚È‚³‚¢v‚Á‚ÄŒ¾‚¢‚½‚‚È‚éB >>577
ƒpƒ‰ƒ[ƒ^‚Ì•ÏX‚µ‚©‚µ‚È‚¢‚Ì‚È‚ç‚»‚¤‚¾‚낤‚Æ‚µ‚©B
‰´‚Í•Ê‚ÉPython‚ðŽg‚¤‚±‚Æ‚ªˆ«‚¢‚Æ‚ÍŒ¾‚Á‚Ä‚È‚¢‚¼B
‰´‚ÍJS‚ð‘å•Ï‹C‚É“ü‚Á‚Ä‚¢‚邪A‚»‚ê‚ÍuŽè”²‚«‚Å‘‚¯‚é‚í‚è‚É‘¬‚¢v‚©‚炾B
‚¾‚©‚牴‚ÍJS‚©‚çC‚ÌDLL‚ðŒÄ‚Ñ‚½‚¢‚ñ‚¾‚æB
‚»‚ꂪ‚¨‘O‚ÌꇂÍPython‚È‚¾‚¯‚¾‚ëB•Ê‚É•sŽv‹c‚Å‚à‚È‚¢‚æB >>578
Python‚ÍCython‚ðŽg‚¦‚Î
‚Ù‚ÚPythonƒR[ƒh‚Ì‚Ü‚ÜC‚̃‰ƒCƒuƒ‰ƒŠ‚ªì‚ê‚é‚ñ‚¾‚æ
‘¬“x‚ÍC‚Å‹Lq‚µ‚½‚à‚Ì‚Æ‚Ù‚Æ‚ñ‚Ç•Ï‚í‚ç‚ñ >>572
‚»‚ê‚ÍJS‚Å‚Í‹c˜_‚µs‚‚³‚ꂽŽ¿–âB‘½•ªƒOƒOƒb‚½•û‚ª‚¢‚¢B
‰ïŽÐ‚Å‘‚ꇂ͑½•ªƒR[ƒfƒBƒ“ƒOƒ‹[ƒ‹‚Å‚Ç‚Á‚¿‚É‚·‚é‚©Œˆ‚Ü‚Á‚Ä‚éB
ƒvƒƒpƒeƒB‚Ì‚ ‚è‚È‚µ‚̃`ƒFƒbƒN‚¾‚¯‚È‚ç(1)‚Ì•û‚ªŒ´—“I‚É‘¬‚¢B
‚½‚¾‚µJS‚ÌꇂÍundefined‚Æ‚¢‚¤’l‚ðÝ’èo—ˆ‚é‚Ì‚ÅA‚»‚ÌꇂÍ(1)‚à(2)‚àƒAƒEƒg‚¾‚ªB
‚±‚ê‚ÍJS‚ÌŽd—lƒoƒO‚¾‚ªA‚±‚Ì•ÓŠÜ‚ß‚ÄJS‚ÍŒµ–§‚ÈŒ^ŠÇ—‚É‚ÍŒü‚¢‚Ä‚È‚¢B
‚»‚à‚»‚àŒ^–³‚µ‚È‚Ì‚Å“–‘R‚¾‚ªB
>>576
‚»‚à‚»‚àƒ_ƒEƒ“ƒLƒƒƒXƒg‚ª•K—v‚Æ‚È‚Á‚Ă鎞“_‚ÅOOP“I‚ɂ͎ד¹B
‘½•ª‚»‚ê‚Í–³‘ʂɃAƒbƒvƒLƒƒƒXƒg‚µ‚Ä‚é‚©‚çB
OOP‰SŽÒ‚ ‚é‚ ‚é‚ÌA’£‚èØ‚Á‚Ä–³‘Ê‚ÉOOP‚µ‚Ä—]Œv‚É•¡ŽG‚É‚È‚Á‚Ä‚éƒP[ƒX‚¾‚ÆŽv‚¤‚æB
‚»‚ê‚àŠÜ‚ß‚ÄŠæ’£‚ê‚Å‚µ‚©‚È‚¢‚ªB >>579
‚Ȃ炨‘O‚ÍPython/Cython‚ň궕é‚ç‚·‚Å‚¢‚¢‚¾‚ëB
‰´‚ÍCŽg‚¦‚é‚©‚çCython‚ðŽg‚¤‚±‚Æ‚Í‚È‚¢‚µA
Python‚àFX•³‚¾‚©‚çJS‚ÅÏ‚Þ‚Æ‚±‚ë‚ÍJS‚Ås‚B
‚¾‚©‚çCscript‚Í‚»‚±‚»‚±—Ç‚©‚Á‚½‚Ì‚¾‚ªAMS‚Í‚±‚ê‚ðŽÌ‚Ä‚ÄPowerShell‚Æ‚¢‚¤•Ê•³Œ¾Œê‰Ÿ‚µ‚È‚Ì‚ÍŽc”OB >>547
>‰´‚ÍPython‚â‚Á‚Ä‚È‚¢‚ªAÅ‹ß‚©‚¶‚낤‚Æ‚µ‚ÄAŽ~‚ß‚½B
>String.replace(regexp)‚ª‚È‚‚ÄARegExp(str)‚µ‚©‚È‚A‚ ‚ ‚±‚è‚á‘Ê–Ú‚¾A‚ÆŽv‚Á‚½B
>‚È‚é‚Ù‚ÇPython‚ł̓Nƒ\ƒR[ƒh‚µ‚©‘‚¯‚È‚¢A‚Æ‚¢‚¤‚Ì‚Í”[“¾‚¾B
”nŽ‚Å‚·‚Ë”»‚è‚Ü‚· >‘½•ª‚»‚ê‚Í–³‘ʂɃAƒbƒvƒLƒƒƒXƒg‚µ‚Ä‚é‚©‚çB
Œ^Á‹Ž‚ª•K—v‚Èê–Ê‚È‚ñ‚Ä‚¢‚‚ç‚Å‚à‚ ‚é‚ÆŽv‚¤‚ªB
‚»‚à‚»‚àƒ_ƒEƒ“ƒLƒƒƒXƒg‚Á‚Ä“®“I‚ÈŒ^”»’è‚Å‚µ‚©‚È‚¢‚ñ‚ÅOOP‚Æ‚Í’¼Œð‚·‚éŠT”O‚¾‚æ‚ÈB
Ž©ŒÈ‰ðŒˆ‚µ‚Ü‚·‚½A2
e: Event‚ÌMoveEvent‚ւ̃_ƒEƒ“ƒLƒƒƒXƒg‰Â”\«”»’è‚Í
@if (e instanceof MoveEvent) { ... }
‚ÅÀ‚¯‚é‚Á‚Û‚¢
‚±‚¤‘‚¢‚½‚Æ‚«AVSCode‚ł̓uƒƒbƒN‚Ì’†‚Åe: MuseEvent‚Æ‚µ‚ẴCƒ“ƒeƒŠƒZƒ“ƒX‚ª‚΂Á‚¿‚è—˜‚½¹Þ°GG
‚³‚ç‚É‚¢‚¤‚ÆA
https://developer.mozilla.org/ja/docs/Web/API/Element/mousedown_event
‚Ì‘‚«•û‚ð‚·‚é‚ÆAaddEventHandler()‚Ì錾‚ƃ‰ƒ€ƒ_Ž®‚©‚çŒ^„˜_‚·‚é‚炵‚
ƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰“à‚É“ü‚Á‚½Žž“_‚ÅŸŽè‚ÉMouseEvent‚Æ‚µ‚Ĉµ‚í‚ê‚é(½¹Þ°)^2 >>580
>‚»‚à‚»‚àƒ_ƒEƒ“ƒLƒƒƒXƒg‚ª•K—v‚Æ‚È‚Á‚Ă鎞“_‚ÅOOP“I‚ɂ͎ד¹B
HTML5‚Æ‚©‚ðŒˆ‚ß‚Ä‚¢‚émozilla.org‚ÉŒ¾‚Á‚ÄA
ν² >>582
String.replace‚ÆRegExp.exec(str)‚Í–¾Šm‚É—p“r‚ªˆÙ‚È‚éB
‚¾‚©‚ç‚»‚Ì‚Ç‚¿‚ç‚ðŽg‚Á‚½‚©‚ʼn½‚ð–Ú“I‚É‚µ‚Ä‚é‚©‚ðƒR[ƒhã‚ÉŽc‚¹‚éB
Python‚Í‚»‚ꂪo—ˆ‚È‚¢‚©‚畳A‚Æ‚¢‚¤‚¾‚¯B
‚Ç‚¤‚â‚çPython‹³‚Ìu‚»‚Ì‚â‚è•û‚͈ê‚‚ł ‚é‚ׂ«v‚ªª–{“I‚É‚ ‚éB
‚±‚ꂪu”‚ ‚é’†‚©‚ç‚»‚ê‚ð‘I‚ñ‚¾A‚»‚ê‚ðŽ‚Á‚ĈÓ}‚ðŽc‚·v‰´‚ÆŒˆ’è“I‚ɇ‚í‚È‚¢B
‚È‚¨Ruby‚à“¯—l‚Éu‚¢‚ë‚ñ‚È‚â‚è•û‚ª‚ ‚é‚ׂ«v‚Å‚ ‚èAPython‚̓vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚Ì’†‚Å‚Í‚©‚È‚èˆÙ’[‚¾‚ÆŽv‚¤B
‚¾‚©‚炱‚»Žó‚¯‚Ä‚¢‚éA‚Æ‚¢‚¤‚Ì‚Í‚ ‚é‚炵‚¢‚ªB
‚È‚¨JSAString.search ‚Æ Regexp.test “™A‘å‘Ì‚É‚¨‚¢‚Ä‚»‚Ìó‹µ‚Å‚ÍŒðŠ·‰Â”\‚ȃƒ\ƒbƒh‚Í‘½X‚ ‚邵A
Array.map/forEach/filter/reduce‚àA–³—–î—‚â‚ê‚Αå‘ÌŒðŠ·‰Â”\‚¾B
‚±‚ê‚ɂ‚¢‚Ă͉´‚Í => ‚̓Nƒ[ƒWƒƒ–³‚µA‚‚܂èŠO•Ï”‚ð’Í‚ß‚È‚¢Žd—l‚É‚·‚é‚ׂ«‚¾‚Á‚½‚ÆŽv‚¤B
‚»‚¤‚·‚ê‚Î => ‚Å—^‚¦‚Ä‚¢‚éŒÀ‚èu–³—–î—ŒðŠ·v‚Ío—ˆ‚È‚‚È‚èAƒR[ƒh‚à“Ç‚Ý‚â‚·‚‚Ȃ邵AƒGƒ‰[‚à•¶–@“I‚É—Ž‚Æ‚¹‚½B
Œ»ó‚Å‚Íu–³—‚È‚±‚Æ‚ð‚µ‚Ä‚È‚¢‚©–Ú‚ÅŠm”Fv‚·‚邵‚©‚È‚A‚±‚ê‚ÍŒ^ƒAƒmƒe[ƒVƒ‡ƒ“‚Å‚Í‚Ç‚¤‚É‚à‚È‚ç‚È‚¢B
‚¾‚©‚ç–Ú‚Å—Ž‚Æ‚·ƒnƒ“ƒKƒŠƒAƒ“‚ð”nŽ‚É‚µ‚Ä‚¢‚ÄA‚Å‚à => ‚ÌŽd—l•s”õ‚É‚Í‘S‚•¶‹å‚ðŒ¾‚í‚È‚¢‚Ì‚ÍA
“¯—l‚É‚¨‘O‚ç‚à’P‚È‚é”nŽ‚©ƒ|ƒWƒVƒ‡ƒ“ƒg[ƒN‚Å‚µ‚©‚È‚¢‚©‚炾‚æB
ŽÀÛA => ‚Å—^‚¦‚éŠÖ”‚ÅŠO•Ï”‚ð’Í‚Ü‚È‚¯‚ê‚΂Ȃç‚È‚¢ƒP[ƒX‚È‚ñ‚Ä”¼”ˆÈ‰º‚¾‚µA
‚»‚Ìê‡‚Í function ‚Æ’·X‚Æ‘‚A‚Å‚æ‚©‚Á‚½B >>585
‚»‚ê‚Í‚»‚̒ʂ肾‚ªA‚»‚à‚»‚àHTML‚ÌŽd—l‚ªOOP‘O’ñ‚Å‚Í‚È‚¢‚Ì‚ÅŒp³\‘¢‚ªãY—í‚É‚È‚Á‚Ä‚È‚¢B
‚»‚ê‚ð–³—–î—‚»‚ê‚Á‚Û‚Œ©‚¹‚©‚¯‚Ä‚¢‚é‚Ì‚ªHTMLElementi‚Æ‚¢‚¤‚©DOMj‚¾‚ªA
‚¿‚傱‚¿‚傱—áŠO“I‚È‚Ì‚ª‚ ‚Á‚Ä“ˆê“I‚Ɉµ‚¢‚«‚ê‚È‚¢B
‘½•ªŠ„‚Æ‘‚¢’iŠK‚Å–³—‚¾‚Æ’ú‚ß‚é‚ÆŽv‚¤‚æB‚»‚ê‚àŠÜ‚ß‚ÄŠæ’£‚ꂾ‚ªB
mozalla‚ªˆ«‚¢‚킯‚Å‚Í‚È‚AOOP‘O’ñ‚Åì‚ç‚ê‚Ä‚È‚¢•¨‚ðÚ‚¹’¼‚»‚¤‚Æ‚µ‚Ä‚é‚©‚ç–³—‚ª‚ ‚é‚ñ‚¾B
‚È‚ç•s®‡‚Ȍ¢Žd—l‚͂΂Á‚³‚èØ‚Á‚Ä‚¢‚Á‚½•û‚ª‚¢‚¢‚ÆŽv‚¤‚ªA‚»‚ê‚͌݊·«‚Ì–â‘è‚ÅØ‚ê‚È‚¢‚炵‚¢B
‚¾‚©‚çA¡Œã‚Æ‚à’¼‚邱‚Æ‚à‚È‚¢‚æB >>570
Python‚ÍOO‹@”\‚ª’†“r”¼’[‚ÅŒ^ƒVƒXƒeƒ€‚à•nŽã‚¾‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃RƒA‚Æ‚È‚éƒhƒƒCƒ“ƒ‚ƒfƒ‹‚ÌŽÀ‘•‚É‚ÍŽg‚í‚ê‚È‚¢
Cython‚ŃhƒƒCƒ“ƒƒWƒbƒN‘‚‚Ì‚Í‚à‚Á‚Æ”ñŒ»ŽÀ“I
‹@ŠBŠwK‚âƒf[ƒ^•ªÍ‚̂悤‚ɃRƒA‚Æ‚È‚é•”•ª‚ð”Ä—p“I‚ÉC‚щƒCƒuƒ‰ƒŠ‰»‚Å‚«‚é‚悤‚È—p“r‚É‚Í“K‚µ‚Ä‚é
Netflix‚âUber‚̂悤‚ȃeƒNƒmƒƒWæiŠé‹Æ‚ªƒAƒvƒŠ‚̃RƒA‚©‚çPythonŠO‚µ‚Ä
‹@ŠBŠwK‚ðŠÜ‚Þƒf[ƒ^•ªÍŒn‚©ƒVƒXƒeƒ€ŠÇ—Œn‚Éi‚Á‚ÄŽg‚Á‚Ä‚é——R >>586
ŠO•Ï”‚ð’Í‚Ü‚È‚¢ArrayŠÖ”H
ƒZƒ“ƒX–³‚¢‚È‚ŸB‚â‚Á‚Ï‚ ‚ñ‚½OOP‚µ‚©‚Å‚«‚È‚¢‚Å‚µ‚å >>561
‹Lq‚ªŠÈ’PBƒ‰ƒCƒuƒ‰ƒŠ‚ª[ŽÀB‚±‚ꂪŋ‚ÌŠˆÈ‚¾‚æB
ƒR[ƒh‚ÌŠwKƒRƒXƒg‚Æ‹Lq‚ÉŽžŠÔ‚ª‚©‚©‚ç‚È‚¢•ªA‘¼‚ÉŽžŠÔ‚ð‚³‚¯‚éB
‹@ŠBŠwKAƒf[ƒ^•ªÍA‰ÈŠwŒn‚ÅPython‚ÌÅ‹‚Í‚µ‚΂炑±‚‚¾‚낤B
¡˜b‘è‚̃fƒB[ƒvƒ‰[ƒjƒ“ƒO‚É‚¨‚¢‚Ä‚àPyTorch‚ªÅ‹‚ÌÀ‚É’…‚±‚¤‚Æ‚µ‚Ä‚¢‚éB
‘åŠé‹Æ‚ª‘½Šz‚ÌŽ‘‹à‚ð“Š“ü‚µ‚Ä‚ËB
JavaScript‚àƒlƒbƒg‚Å‚Í•K{‚È‚Ì‚ÅPython‚ÆŒ¨‚ð•À‚ׂ錾Œê‚ɂȂ邾‚낤B
‚±‚Ì2‚‚ð‹É‚ß‚½‚à‚Ì‚¾‚¯‚ª«—ˆ¶‚«Žc‚ê‚éBjaba‚Í10”NŒã‚É‚ÍÁ‚¦‚Ă邾‚낤‚ÈB >>589
ŠO•Ï”‚ð’Í‚Þ‘O’ñ‚È‚çreduce‚Í‘S‚ÄforEach‚Å‘ã‘Öo—ˆ‚éB
‹t‚ÉŒ¾‚¤‚ÆA‚í‚´‚í‚´reduce‚ð“ü‚ꂽ‚Ì‚ÍAŒ©‚½–Úimmutable‚É‚µ‚½‚¢‚¾‚¯B(–ß‚è’l‚ðconst‚Ŏ󂯂ç‚ê‚éj
‚µ‚©‚µŒ»ó‚Å‚Í—^‚¦‚½ŠÖ”‚ªŠO•Ï”‚ð•ÏX‚µ‚Ä‚¢‚È‚¢A‚Æ‚¢‚¤ŠmØ‚ªu•¶–@“I‚É‚Ív‚È‚¢B
‚‚܂èAuŒ©‚Ä”»’fv‚·‚邵‚©‚È‚¢B
‚±‚Ì•Ó‚ªƒnƒ“ƒKƒŠƒAƒ“‚ð”nŽ‚É‚µ‚Ä‚¢‚邨‘O‚炪—‰ðo—ˆ‚Ä‚È‚¢‚Æ‚±‚낾B
=> ‚ªƒNƒ[ƒWƒƒ–³‚µ‚È‚çA
const tmp = arr.reduce( => );
‚É‚¨‚¢‚ÄAtmpˆÈŠO‚Ì•Ï”‚É•ÏX‚ª‚È‚¢‚±‚Ƃ𕶖@“I‚É•ÛØo—ˆ‚½B
‚±‚ê‚ð‚¹‚¸‚ÉAimmutable‚¾‚ AŒ^‚ŃGƒ‰[‚ª—Ž‚Æ‚¹‚邾‚ A‚È‚ñ‚ÄŒ¾‚Á‚Ă鎞“_‚ňӖ¡‚Ë‚¦A‚Æ‚¢‚¤‚¾‚¯B
‚à‚Á‚ÆŒø—¦“I‚ɃGƒ‰[‚ð—Ž‚Æ‚¹‚éŽd—l‚Í—L‚Á‚½‚Á‚ÄŽ–‚¾‚æB >>590
‘½•ª‚»‚Ì‚Æ‚¨‚è‚È‚ñ‚¾‚¯‚ÇTSŽg‚¢‚ªPythonŽg‚¤‚ƃCƒ‰ƒCƒ‰‚·‚邺w
Œ^î•ñ‚àƒWƒFƒlƒŠƒNƒX‚à•nŽã‚¾‚µA‘½ƒgƒŠƒbƒL[‚Å‚à’Z‚‚Ä•›ì—p‚Ì‚È‚¢ƒR[ƒh‚ð‘‚TSŽg‚¢‚ɑ΂µ‚ÄAPythonŠEŒG‚Í•’·‚Å•›ì—p‚àŽg‚¤ŠÈˆÕ‚ȃR[ƒh‚ð‘‚B
‚Ç‚Á‚¿‚ª—D‚ê‚Ä‚é‚Æ‚ÍŒ¾‚í‚È‚¢‚¯‚ÇB•¶‰»‚ª‚©‚È‚èˆá‚¤‚悤‚ÉŠ´‚¶‚é >>590
Java‚ª10”NŒã‚ÉÁ‚¦‚邱‚Æ‚ÍŒ´—“I‚É‚È‚¢B
Java‚ªŽg‚í‚ê‚Ä‚¢‚éƒCƒ“ƒtƒ‰‚Æ‚©‚Í10”NXV‚¾‚ªA‚»‚Ì‚Ü‚Ü–â‘è‚È‚¢‚Æ‚©‚Å20”N‚Æ‚©‚ÉL‚Ñ‚½‚肵‚Ä‚éB
‚»‚µ‚ÄXVŽžAJava‚Ì‚Ü‚Ü‚É‚·‚é‚©AŽv‚¢Ø‚Á‚Ä‘¼Œ¾Œê(C++“™j‚É‚·‚é‚©‚ª–â‚í‚ê‚é‚킯‚¾‚ªA
¡Œ»Ý‚ÍJava‚Ì‚Ü‚ÜXV‚³‚ê‚Ä‚¢‚é‚Ì‚ª•’Ê‚¾‚ÆŽv‚¤B
‚¾‚©‚ç10”NŒã‚àu¡XV‚µ‚Ä‚¢‚éˆÄŒv‚ªXVˆÄŒ‚Æ‚µ‚Äo‚Ä‚‚éB
‚±‚ê‚̓Kƒ`‚Å20”N•ª‚Ù‚ÇÏ‚Ýオ‚Á‚Ä‚¢‚é‚©‚çA‘‚‚©‚Ç‚¤‚©‚Í‚Æ‚à‚©‚A“Ç‚ß‚é•K—v‚Í10”NŒã‚àŠmŽÀ‚É‚ ‚éB
Python‚Í¡‚Ì‚Æ‚±‚ëu‰½‚Å‚ào—ˆ‚év‚Æ‚¢‚¤ˆÓ–¡‚ňÀ”v‚¾‚ªA‘¬“x‚ª’x‚¢‚Ì‚ª‚Æ‚É‚©‚’v–½“IB
‰½“x‚àŒ¾‚Á‚Ă邪A‰´‚ÍPythonw‰c‚ª‚±‚±‚ÉÁ‹É“I‚È——R‚ª‚³‚Á‚ς蕪‚©‚ç‚È‚¢B
Œ´—“I‚É‚ÍJS‚Æ“¯’ö“x‚Ü‚Å‚Ís‚¯‚é‚Í‚¸‚ÅA‚»‚¤‚È‚ê‚Ί®‘S‚É“V‰º‚ðŽæ‚ê‚éB
‘΂µ‚ÄJS‚ÍŸŽè‚É‘¬‚‚µ‚Ä‚à‚炦‚½‚¾‚¯‚Ì’I‚Ú‚½‚Å‚Í‚ ‚邪A
‚»‚à‚»‚àGUI‚ÌHTML‚ƃ_ƒ“ƒgƒc‚É‘Š«‚ª—Ç‚AiŒ³XJS—p‚¾‚©‚ç“–‚½‚è‘O‚¾‚ªj
”ñ“¯Šú‚ª’´âƒEƒUƒC‚È‚ª‚ç‚àƒfƒXƒNƒgƒbƒvƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ü‚Å‚Éio‚µ‚Ä‚«‚½B
Python‚ª’x‚¢‚Ü‚Ü‚È‚çAJS‚ªu“¯Šúv‚ðo‚µ‚½‚çPython‚ð•’Ê‚ÉŽE‚¹‚é‚ÆŽv‚¤B
‚È‚‚Æ‚àA¡Œ»Ý‚ÌŒ¾Œê‚Æ‚µ‚Ä‚Ìo—ˆ‚ÍAJS‚Ì•û‚ª”’iゾB
‚»‚ê‚à•ª‚©‚Á‚Ä‚©APythonŽg‚¢‚ÍPython‚ÌuŒ¾Œê‚Æ‚µ‚Äv—Ç‚¢“_‚È‚ñ‚Äâ‘΂ɋ“‚°‚È‚¢‚¾‚ëB
‚±‚±‚Å‚à–³Ž‹‚³‚ê‚Ä‚éBŽÀÛA‚È‚¢‚ÆŽv‚¤‚µB
”Þ“™‚É‚Æ‚Á‚Ä‚ÍŽg‚Á‚Ä‚¢‚él”‚ª‘½‚¢‚±‚ÆŽ©‘Ì‚ª•Ší‚Å‚ ‚èA‚»‚ê‚ð–ÚŽw‚µ‚Ä‚¢‚é‚©‚炾B
–ܘ_‚±‚ê‚à‚ ‚肾‚ªAJava‚à‚»‚¤‚¾‚Á‚½‚ªA‚±‚ꂾ‚Æ‚Ç‚¤‚µ‚Ä‚àŒÃ‚‚È‚Á‚Ä‚¢‚B
‚¾‚©‚çA‰¼‚ÉJava‚ªŽ€‚Ê‚È‚çA“¯—l‚ÉuŒÃ‚¢v‚Æ‚³‚ê‚ÄŽ€‚Ê‚Ì‚ÍPython‚¾‚낤‚ËB >>593
30”N‘O‚̃ŒƒKƒV[Œ¾Œê‚Æ”ä‚ׂČ¾Œê‹@”\“I‚É—DG‚¶‚á‚È‚¯‚ê‚Α¶Ý‰¿’l‚È‚¢‚æ‚Ë
Python‚ªTS‚É”ä‚ׂėDG‚È‚Ì‚Í¡‚Ü‚ÅŽg‚í‚ê‚Ä‚«‚½—ðŽj‚ª‚ ‚é‚Æ‚±‚ë >>594
Python‚ÍJavaScript‚Ìh’†“r”¼’[h‚È‘¬“x‚ðØ‚èŽÌ‚Ä‚ÄŽ©—R‚ðŽè‚É‚µ‚½‚Ì‚¾B
‚»‚à‚»‚àAˆ—‘¬“x‚ªƒlƒbƒN‚É‚È‚é‚È‚ñ‚Ä’PƒŒvŽZ‚ðŒJ‚è•Ô‚·ê‡‚ª‚Ù‚Æ‚ñ‚Ç‚Å
‚»‚ñ‚È‚à‚ñƒ‰ƒCƒuƒ‰ƒŠ‚É”C‚¹‚ê‚΂¢‚¢‚ñ‚¾‚æBPython‚ðŽg‚Á‚Ä‚é‚̂̓vƒƒOƒ‰ƒ}‚¾‚¯‚¶‚á‚È‚¢B
‰ÈŠwŽÒA”ŠwŽÒ‚È‚Ç‘¼‹ÆŽí‚à‘½‚¢B‹Lq‚ÌŠÈ’P‚³Bƒ‰ƒCƒuƒ‰ƒŠ‚Æ‚¢‚¤ˆâŽYB‘åŠé‹Æ‚Ì“ŠŽ‘B
‚·‚ׂĂªPythonÅ‹‚ðŽ¦‚µ‚Ä‚¢‚éB
GUI‚ÍJavaScript‚ÉŒR”z‚ª‚ ‚ª‚éB‚±‚ê‚Ɉق𥂦‚é“z‚Í‚¢‚È‚¢‚¾‚ëB
JavaScript‚ÍWEB‚ű‚Ý•ª‚¯‚ª‚Å‚«‚Ä‚¢‚ÄÅ‹Œ¾Œê‚̈ê‚‚¾B
‚»‚ñ‚È‚ÉPython‚ð‹t¦‚Ý‚·‚é•K—v‚Í‚È‚¢‚æB >>595
Œ¾Œê‚Ì‹Lq‚ªŠÈŒ‰B‚±‚ꂪˆê”Ô‚¾‚ÈB
ƒpƒ\ƒRƒ“‚æ‚èƒXƒ}ƒzBFLASH‚æ‚èYouTubeBƒ}ƒjƒ…ƒAƒ‹ŽÔ‚æ‚èƒI[ƒgƒ}B
lŠÔ‚ÍŠy‚È•û‚É‚È‚ª‚ê‚鶂«•¨B
ˆ—‚ÉŽžŠÔ‚Ì‚©‚©‚é‚à‚̂̓‰ƒCƒuƒ‰ƒŠ‚É‚È‚°‚ăXƒNƒŠƒvƒgŒ¾Œê‚Å‹LqB
‚±‚ꂪ‚±‚ê‚©‚ç‚Ì—¬‚ꂾ‚ÆŽv‚¤B¶ŽY«‚à‚ ‚°‚Ä‚¢‚©‚È‚¢‚ÆB uƒƒV‚àC‚Å‹ê˜J‚µ‚½‚ñ‚¾‚©‚çA‚¨‘O‚çŽáŽÒ‚à‹ê˜J‚¹‚¢v
ª
‚±‚ñ‚Èl‚¦‚̘VŠQ‚ª¶ŽY«‚𒘂µ‚’ቺ‚³‚¹‚Ä‚é
>>596
ãY—í‚È‚¾‚¯‚̃R[ƒh‚ð‘‚‚±‚Æ‚ÍŽÀ‚ÍŠÈ’P‚È‚ñ‚¾‚æB‚½‚¾‚µ‚»‚ê‚Í’Êí’x‚¢B
‚¾‚©‚爗Œn‚ª‚»‚à‚»‚à‘¬‚¢‚Á‚ÄŽ–‚ªƒR[ƒh‚Ì”ü‚µ‚³‚ð•Û‚Âã‚Å‚àd—v‚Å‚Í‚ ‚éB
ŽÀÛAPython‚©‚ç‘‚«Š·‚¦‚ð”—‚ç‚ê‚éꇂ͂قڑS‚Ĉ—‘¬“x‚Ì–â‘肾‚ëB
‚¾‚©‚çA
> ‘½ƒgƒŠƒbƒL[‚Å‚à’Z‚‚Ä•›ì—p‚Ì‚È‚¢ƒR[ƒh‚ð‘‚TSŽg‚¢‚ɑ΂µ‚ÄAPythonŠEŒG‚Í•’·‚Å•›ì—p‚àŽg‚¤ŠÈˆÕ‚ȃR[ƒh‚ð‘‚B (>>593)
‚±‚ê‚̉“ˆö‚à‚»‚±‚É‚ ‚éBƒgƒŠƒbƒL[‚¾‚ª’Z‚¢ƒR[ƒh‚Á‚Ä‚Ì‚Í’ÊíAŽÀs‘¬“x‚ª’x‚¢B
‚¾‚©‚炱‚ê‚ð‹–—eo—ˆ‚é‚Ì‚ÍA‘¬‚¢ˆ—Œn‚ª‚ ‚é‚©‚炱‚»B
Python‚Ìꇂ͂»‚à‚»‚à‘‚¯‚È‚¢‰Â”\«‚à‚ ‚邪A‘‚¯‚½‚Æ‚µ‚Ä‚à’x‚¢‚©‚çŽg‚¦‚È‚¢‰Â”\«‚à‚ ‚éB
ƒgƒŠƒbƒL[‚Æ‚ÍŒ¾‚í‚È‚¢‚ª“TŒ^“I‚Ȃ̂ͳ‹K•\Œ»‚¾B
¡Œ»Ý³‹K•\Œ»‚Í‘¬‚¢‚Æ‚ÍŒ¾‚¦‚È‚¢ó‹µ‚ÅAuƒoƒbƒNƒgƒ‰ƒbƒN‚ð—‰ð‚µ‚Ä‘¬‚¢³‹K•\Œ»‚ð‘‚v‚Æ‚¢‚¤–{––“]“|‚È‚±‚Æ‚ð‚â‚ç‚©‚µ‚Ă邾‚ëB
‚ ‚ê‚à–{—ˆ‚Íu•³‘¬‚¢³‹K•\Œ»ƒ‹[ƒ`ƒ“v‚Æuˆê”Ô•ª‚©‚è‚â‚·‚¢³‹K•\Œ»v‚ÅÏ‚Þ‚±‚Æ‚Å‚µ‚©‚È‚¢B
‚½‚¾A¡‚ÍŒ»ŽÀ“I‚É‚»‚ꂪo—ˆ‚È‚¢‚킯‚Å‚³B
“¯—l‚ÉA³‹K•\Œ»‚Å‘‚¯‚ÎŽŠ‹É’Pƒ‚È‚Ì‚ðAindexOf‚âfor‚Æ‚©‚ÅŽ©‘O‚Å’Tõ‚µ‚Ä‚½‚è‚·‚é‚Ì‚à‚»‚Ì‚½‚ßB
ˆ—Œn‚Ì‘¬‚³‚ªƒR[ƒh‚ÌŠÈŒ‰‚³/”ü‚µ‚³‚ð‰ºŽx‚¦‚·‚é‚à‚Ì‚Å‚Í‚ ‚é‚ñ‚¾‚æB
‚¾‚©‚ç‚‚܂èAu’PƒŠÈŒ‰‚Å•ª‚©‚è‚â‚·‚¢‚ª’x‚¢ƒR[ƒhv‚ð‹–—e‚·‚éˆ×‚É‚Í‘¬“x‚ª•s‰ÂŒ‡‚ÅA
Python‚à‘¬“x‘Îô‚·‚ê‚΂±‚Ì•Ó‚ªŽg‚¦‚é‚悤‚É‚È‚Á‚ÄŒ»ŽÀ“I‚È—˜—p‰¿’l‚ªã‚ª‚é‚ñ‚¾‚¯‚Ç‚ËB
‚»‚êˆÈ‘O‚É‘¬“x‚È‚ñ‚Äl‚¦‚Ä‚È‚¢ƒR[ƒh‚΂©‚肾‚©‚ç‘S‘Ì“I‚É•³’x‚¢‚Ì‚©‚à‚µ‚ê‚ñ‚ªB
‚½‚¾‚»‚êˆÈ‘O‚ÉAJS‚àPython‚Æ”ä‚ׂē‚¢Œ¾Œê‚Å‚Í‚È‚¢B
PythonŠEŒG‚Ìí—ª“I‚É‚ÍuPython‚±‚»ÅˆÕŒ¾Œêv‚Å‚ ‚èA‚»‚êˆÈŠO‚̈ӌ©‚Í”F‚ß‚ç‚ê‚È‚¢‚Ì‚¾‚낤‚¯‚ÇA
‚¢‚í‚ä‚éLLŒ¾Œê‚Í‚Ç‚ê‚à‚±‚ê‚àŠÈ’P‚¾‚µA‘å·‚È‚¢B
JS‚É‚¨‚¢‚Ä‚Íu”ñ“¯Šúv‚ª–³‘ʂɛƂèƒ|ƒCƒ“ƒg‚É‚È‚Á‚Ä‚é‚©‚çA
‚±‚ꂳ‚¦‚È‚‚È‚ê‚ΓïˆÕ“x‚ÍPython‚æ‚è‚à‚Þ‚µ‚ëŠÈ’P‚É‚È‚éBi•¶–@‚ª’´âŠÈ‘f‚¾‚µj
(‚½‚¾‚µA–³‚‚Ȃ邱‚Æ‚Í‚È‚¢‚Æ‚àŽv‚¤‚ªB”ñ“¯Šú@‹³“‚·‚¬) >>596
>>598
‚¿‚È‚Ý‚É‚¨‘O‚͉½‚©Š¨ˆá‚¢‚µ‚Ä‚¢‚é‚悤‚¾‚ªA‰´‚ÍPython‚ðŒ™‚Á‚Ä‚¢‚é‚킯‚Å‚à‚È‚¢‚µAC‚ð‹‚¢‚Ä‚¢‚é‚킯‚Å‚à‚È‚¢B
‚»‚à‚»‚à‰´‚ÍC‚É‹ê˜J‚à‚µ‚Ä‚È‚¢B‚»‚¤Žv‚¦‚é‚Ì‚ÍA‚¨‘O‚ªC‚É‹ê˜J‚µ‚Ä‚¢‚é‚©‚炾B
Šù‚ÉŒ¾‚Á‚½‚ªA‰´‚ªJS‚ð‹C‚É“ü‚Á‚Ä‚é‚Ì‚ÍAuŽè”²‚«‚ÌŠ„‚É‚Í‘¬‚¢‚©‚çv‚¾B
‘¬‚“®‚©‚·ˆ×‚É‚Í‚±‚¤‘‚¢‚½•û‚ª‚¢‚¢A‚Æ•ª‚©‚Á‚Ä‚¢‚Ä‚àA–Ê“|‚È‚Ì‚ª‘唼‚ÅA
‚Ç‚¤‚Å‚à‚¢‚¢‚Æ‚±‚ë‚©‚犮‘S‚Ɏ肪”²‚¯‚é‚©‚ç‚¢‚¢‚Ì‚¾B
‚¾‚©‚çuJSv‚Æ‚¢‚¤‚æ‚è‚ÍuJS‚̈—Œn‚Ì‘¬‚³v‚ªD‚«‚È‚Ì‚Å‚ ‚Á‚ÄA‹t‚ÉJS‚ª’x‚‚ÄPython‚ª‘¬‚¯‚ê‚ÎA‰´‚ÍPython‚ðŽg‚Á‚Ä‚¢‚½‚¾‚낤B
‚»‚Ì’ö“x‚̘b‚Å‚µ‚©‚È‚¢B
‚»‚ê‚Æ‚Í•Ê‚ÉAJS‚àŒ¾Œê“I‚É‚Í‚©‚È‚è–Ê”’‚¢‚Ì‚Å‹C‚É“ü‚Á‚Ä‚Í‚¢‚邪B
‚È‚¨CA‚ ‚ê‚͓‚¢‚Ì‚Å‚Í‚È‚‚ÄA—‰ð‚·‚é‚Ì‚ÉPC‚Ì•¨—“I\‘¢‚Ì—‰ð‚ª•s‰ÂŒ‡‚È‚¾‚¯‚¾B
ŽÀ‚Í‚»‚ê‚ð’m‚Á‚Ä‚¢‚é“z‚Íʼn‚©‚ç‚‚܂¸‚©‚È‚¢B
‚»‚µ‚ÄŽd—l‚ÍJS‚âPython‚æ‚è‚à’Pƒ‚Ȉ×AŠo‚¦‚é”͈͂¾‚¯‚Ȃ瑽•ª1TŠÔ‚à‚ ‚ê‚Ηá‚ÌK&R‚Í“Ç‚ß‚Ä‚µ‚Ü‚¤B
Ž—‚Ä‚¢‚é‚Ì‚Í•¨—‚ÅAma=F‚ª‘S‚Ä‚Ì—ÍŠw‚àAʼn‚©‚ç—‰ð‚µ‚ÄŽg‚¢‚±‚È‚¹‚é“z‚ÆA1”NŒo‚Á‚Ä‚à‘S‘R—‰ðo—ˆ‚È‚¢“z‚ÆãY—í‚ɕʂꂽ‚ëB
‚ ‚ê‚Í—‰ð—Í/Žvl—Í‚Ì–â‘肾‚ªA‚Æ‚É‚©‚Au—‰ðo—ˆ‚é“z‚Íʼn‚©‚ç‹ê˜J‚à‚¹‚¸‚É—‰ðo—ˆ‚Ä‚µ‚Ü‚¤v‚Æ‚¢‚¤‚Ì‚ÍC‚Æ“¯‚¶B
ŒN‚ÍC‚ª‚Æ‚Ä‚à“‚‚ÄAŽáŽÒ‚ªPython‚µ‚©Žg‚¦‚¸APython‚µ‚©Žg‚¦‚È‚¢Ž©•ª‚ª’u‚«‹Ž‚è‚É‚³‚ê‚È‚¢¢ŠE‚ð–]‚ñ‚Å‚¢‚é‚Ì‚¾‚낤‚¯‚ÇA
‚»‚ê‚Í‚È‚¢B
C‚Í‘¼Œ¾Œê‚Æ”ä‚ׂ½‚çuƒhƒnƒ}ƒŠ‚·‚é“z‚Íâ‘΂ɔ²‚¯o‚¹‚È‚¢v‚¾‚¯‚ÅAŽd—l‚Æ‚µ‚Ä‚Í‚©‚È‚èŠÈ’P‚ÈŒ¾Œê‚¾B
‚»‚µ‚ÄŒvŽZ‹@HŠw‚È‚ç•’Ê‚ÉŽö‹Æ‚µ‚Ă邵AŽÀÛA”Þ“™‚Í•’Ê‚ÉŽg‚¦‚Ä‚¢‚é‚ÆŽv‚¤‚æB
‚½‚¾Aƒf[ƒ^ƒTƒCƒGƒ“ƒeƒBƒXƒg‚Ý‚½‚¢‚ÈAŒvŽZ‹@‚ðŽg‚¤‚±‚Æ‚ªŽå–Ú“I‚Å‚Í‚È‚A’Pƒ‚ÉŒvŽZ‚¾‚¯‚µ‚½‚¢“z“™‚Í‚Ü‚¸‚ÍPython‚©‚炾‚낤‚³B
‚»‚±‚à‚µ‚΂炂͕ςí‚ç‚È‚¢‚Æ‚ÍŽv‚¤B
PythonŽg‚¦‚ζŽY«‚ª‚‚¢‚ÆŽv‚Á‚Ä‚é‚Ì‚Í‚¨‘O‚ª”nŽ‚È‚¾‚¯B
¶ŽY«‚ª‚‚¢“z‚ÍA‚»‚ÌŽžX‚ɉž‚¶‚ÄÅ“K‚ÌŽè–@‚ð‘I‘ð‚·‚é‚¾‚¯B
‚»‚ꂪPython‚È‚ç‚»‚¤‚¾‚낤‚µA‚Ç‚¤‚¹‘¬“x‚ª–â‘è‚É‚È‚é‚Æ•ª‚©‚èØ‚Á‚Ä‚¢‚é‚Ì‚È‚çʼn‚©‚çC‚à‚ ‚肾‚낤‚³B ‚±‚̃Nƒ\ç’·‚È‘Ê•¶‘‚“z‚ªŠÈŒ‰‚ȃR[ƒh‘‚¯‚é‚ÆŽv‚¤‚©‚¢H
—v–ñ‚·‚é‚ÆPython‚ª‘ž‚¢‚Á‚Ä‚±‚Æ‚©‚—
‚Ç‚¤‚Å‚à‚¢‚¢‚ª‚¢‚¢‰ÁŒ¸ƒXƒŒƒ`
’·•¶‘‚«‚½‚¢‚È‚ç•ÊƒT[ƒrƒX‚¢‚«‚á‚¢‚¢‚Ì‚É‚—
‚¹‚Á‚©‚’š”J‚Éà–¾‚µ‚½‚Ì‚É¡‚ÌŽáŽÒ‚Í’·•¶‚ª“Ç‚ß‚È‚¢‚Æ‚©ƒLƒŒo‚·‚Ì‚É1•[
>>603
‚¨‘O‚ÍC‚ªo—ˆ‚é“z‚ª‘ž‚‚Ä‘ž‚‚ÄŽd•û‚È‚¢‚Ì‚Í•ª‚©‚Á‚½B
‚½‚¾A‰½“x‚àŒ¾‚Á‚Ă邪AC‚à‘債‚ē‚‚Í‚È‚¢B
Ì‚¾‚Á‚½‚çƒvƒƒOƒ‰ƒ~ƒ“ƒO‚È‚ñ‚Ä‚µ‚È‚©‚Á‚½”nŽ˜A’†‚àŋ߂̓vƒƒOƒ‰ƒ~ƒ“ƒO‚·‚é‚悤‚É‚È‚Á‚Ä‚«‚Ä‚é‚©‚çA
‘娂̔äŠr“I”nŽ‚©‚猩‚½‚瓯‚¶•¨‚ª“‚Œ©‚¦‚邾‚¯B
“–‚½‚è‘O‚¾‚ªC‚È‚ñ‚ÄÌ‚©‚ç•Ï‚í‚Á‚Ä–³‚¢‚µAi‚Æ‚¢‚¤‚©•Ï‚í‚ç‚ȉ߂¬‚¾‚ªj
¡‚ÍIDE‚̃Tƒ|[ƒg‚à‚ ‚èƒlƒbƒg‚Å‚àî•ñ‚ð’T‚¹‚é‚©‚çAÌ‚æ‚è‚Í’f‘RŠÈ’P‚ÉŠw‚ׂéB
“¯‚¶—ŒnŠw‰È‚Å”äŠr‚·‚ê‚ÎA’E—Ž—¦‚ÍŒ€“I‚ɉü‘P‚µ‚Ä‚¢‚é‚Í‚¸‚¾‚æB
‚»‚à‚»‚àÌ‚Í‚Pl1‘äPC‚Å‚à‚È‚A‰Æ‚Å—\K/•œK‚·‚ço—ˆ‚È‚©‚Á‚½‚킯‚Å‚³B
F12‰Ÿ‚¹‚ÎIDEƒ‚ƒhƒL‚ª‚¢‚«‚È‚èo‚Ä‚‚é¡‚Æ‚Í‘S‘Rˆá‚¤B C‚ÌŽd—l‚ÍŠm‚©‚ɬ‚³‚¢‚æA‚µ‚©‚µ‚¾‚©‚ç‚Æ‚¢‚Á‚Ĭ‚³‚¢ƒCƒR[ƒ‹ŠÈ’P‚È¢ŠE‚¶‚á‚È‚¢B
ƒƒ‚ƒŠƒpƒYƒ‹‚µ‚½‚èƒKƒ`‚Ŗ𗧂ƒ}ƒNƒ‘g‚ñ‚¾‚èSIMD‚ÅÅ“K‰»‚µ‚½‚è–¢’è‹`“®ì‚Æí‚Á‚½‚肵‚Ä‚Ý‚é‚Æ—Ç‚¢‚æ
ƒ}ƒƒbƒN‚Å‚«‚È‚¢‚â‚‚ª‚¨‚è‚ã‚Á‚ă}H‚—‚—
>>609
–¢’è‹`“®ìˆÈŠO‚Í‚à‚¿‚ë‚ñ‚â‚Á‚Ă邼B
‚½‚¾JS‚Å‚àTypedArray‚Í“±“ü‚³‚ꂽ‚µAƒƒ‚ƒŠƒpƒYƒ‹‚âÅ“K‰»‚ÍC‚¾‚¯‚̘b‚Å‚à–³‚¢‚¯‚ÇB
‚Þ‚µ‚ë‚»‚ê‚ð‚â‚é‹C‚ª‚È‚¯‚ê‚ÎÅ‚‘¬‚Í–ÚŽw‚¹‚È‚¢B
numjs‚Æ‚©Žg‚Á‚Ä‚é“z‚ÍJS/TS‚Å‚»‚ê‚â‚Á‚Ä‚é‚ÆŽv‚¤‚æB
‚ ‚ÆA‚¨‘O‚à‚»‚¤‚¾‚ªAÅ‹ß‚ÌŽá‚¢“z‚ÍŽg‚¢‚±‚È‚·‘S‹@”\‚ðŽg‚¤A‚ÆŠ¨ˆá‚¢‚µ‚Ä‚¢‚éB
C‚̃}ƒNƒ‚È‚ñ‚Ä[“ü‚肵‚½‚ç—]Œv‚ɶŽY«‚ª—Ž‚¿‚éB‚ ‚ê‚Í‚Ï‚Á‚ÆŒ©‚Ä•ª‚©‚é”͈͂Ŏg‚¤‚ׂ«•¨B
ƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚È‚ñ‚ăAƒvƒŠ‚ðì‚铹‹ï‚Å‚ ‚Á‚ÄA“¹‹ï‚ðŽg‚¢“|‚·‚Ì‚ª–Ú“I‚Å‚Í‚È‚¢B
•ª‚©‚é”͈͂Ŏg‚¢AŠó–]‚Ì“®ì‚ð‚·‚éƒAƒvƒŠ‚ªo—ˆ‚é‚Ì‚È‚çA‚»‚ê‚Å‚¢‚¢B
‘S‚Žg‚Á‚Ä–³‚¢‹@”\‚ª‚ ‚Á‚½‚Æ‚µ‚Ä‚àAŠÖŒW‚È‚¢B •Ê‚É‚±‚±TSƒXƒŒ‚È‚ñ‚¾‚©‚çmalloc‚Å‚«‚ñ“z‚¨‚Á‚Ä‚à‚¦‚¦‚â‚ëB¡‚Íוª‰»‚ÌŽž‘ゾ‚µB
>>609
613“Ç‚ñ‚Å‹C‚¢‚½‚ªA•Êl‚Å‚ ‚Á‚½‚©B
C‚É‚Í‚à‚¤‚±‚育‚è‚È‚çA‚»‚ê‚à‚¢‚¢‚ÆŽv‚¤‚¯‚Ç‚ËB
ˆê‰žNode‚©‚çffiŒo—R‚ÅC‚ÌDLL‚͌Ăׂé‚炵‚¢B
‚»‚ê‚È‚è‚ɃI[ƒo[ƒwƒbƒh‚Í‚ ‚é‚炵‚¢‚¯‚Ç‚àA•’Ê‚ÉŽg‚Á‚Ă镪‚ɂ͂قڌ뷂¾‚ÆŽv‚í‚ê‚éB
JS‚Ì”’l‚Ídouble‘Š“–‚¾‚µAˆê‰ž32bit‚̃rƒbƒg‰‰ŽZ‚à‚ ‚邵A
ŠÂ‹«Ž©‘Ì‚ª‚»‚±‚»‚±‘¬‚¢‚©‚çAŽ–‘O€”õ‚ÍJS‘¤‚Å‚â‚Á‚Ä‚à‘債‚Ä–â‘è‚È‚¢‚¾‚낤B
’P”‚̉‰ŽZ‚ŃI[ƒo[ƒwƒbƒh‚ª‚Å‚©‚¢‚Ì‚Í–â‘肾‚©‚çA‚»‚±‚ð‰½‚Æ‚©‚Å‚«‚ê‚ÎA
‰ÈŠw‹ZpŒvŽZ‚©‚çPython‚ð‹ì’€‚Å‚«‚é‰Â”\«‚ª‚ ‚éB
‚½‚¾APython‚ÌC‚ÌDLLƒR[ƒ‹‚à“¯—l‚É‚»‚ê‚È‚è‚É’x‚¢‚炵‚¢‚Ì‚ÅAƒ}[ƒVƒƒƒŠƒ“ƒO‚Å‚ ‚ê‚΂ǂ¤‚É‚à‚È‚ç‚È‚¢‚¯‚Ç‚ËB >>600
„CA‚ ‚ê‚͓‚¢‚Ì‚Å‚Í‚È‚‚ÄA—‰ð‚·‚é‚Ì‚ÉPC‚Ì•¨—“I\‘¢‚Ì—‰ð‚ª•s‰ÂŒ‡‚È‚¾‚¯‚¾
PC‚Ì•¨—“I\‘¢‚Æ‚â‚炪—‰ð‚Å‚«‚½‚Æ‚±‚ë‚Å void (*signal(int sig, void (*func)(int)))(int) ‚È‚ñ‚Ä錾‚ð“Ç‚ß‚é‚悤‚É‚È‚é‚Æ‚Í‚Æ‚Ä‚àŽv‚¦‚È‚¢‚ñ‚¾‚ª >>615
‚»‚ê‚ÍŠµ‚ꂾ‚ËB
‚½‚¾A‰´‚à‚ ‚Ì•¶–@‚Í‚©‚È‚è“ä‚ÅA³’¼AŽd—l‚ª‚æ‚‚È‚¢‚ÆŽv‚¤B
‚»‚ê‚̓J[ƒjƒnƒ“‚à•¶‹åŒ¾‚í‚ê‚Ä‚ÄAŒ¾‚¢–ó‚Í‘½•ªƒOƒOƒb‚½‚çƒqƒbƒg‚·‚éB
Šm‚©AžH‚A‚±‚ÌŒ`Ž®‚È‚çƒ}ƒNƒ‚É‚µ‚Ä‚à“ü‚êŽq‚Å‚à“®‚A‚炵‚¢‚ªA
‰´‚ªŽŽ‚µ‚½ŒÀ‚è‚ÍGo‚Ý‚½‚¢‚È•ª‚©‚è‚â‚·‚¢Œ`Ž®‚Å‚à•’Ê‚Éo—ˆ‚½B
‚½‚¾A‚»‚êˆÈ‘O‚ÉŽÀ‚Í“–Žž‚ÌC‚Å‚ÍŠÖ”ƒ|ƒCƒ“ƒ^‚ð‚»‚ñ‚È‚ÉŽg‚í‚È‚©‚Á‚½B
³Šm‚ÉŒ¾‚¤‚ÆAsort‚Æ‚©‚Å‚Í•K—v‚Æ‚³‚ê‚Ä‚¢‚½‚ªA’P”‚ÅŽg‚¤•ª‚É‚ÍŽô•¶ˆµ‚¢‚Å‚æ‚A
–ܘ_n—ûŽÒ‚Í‚»‚ê‚Å‚àŽg‚Á‚Ä‚½‚Ì‚¾‚낤‚¯‚ÇA¡‚قǃJƒWƒ…ƒAƒ‹‚É‚ÍŽg‚í‚ê‚Ä‚È‚©‚Á‚½B
K&R‚Å‚àAuŠÖ”ƒ|ƒCƒ“ƒ^‚ào—ˆ‚é‚æv‚Æ‚³‚ç‚Á‚ÆG‚ê‚ç‚ê‚Ä‚¢‚é’ö“x‚Å‚µ‚©‚È‚¢B
‚»‚ꂪJava‚ÅŠÖ”ƒ|ƒCƒ“ƒ^‚ª‘¶Ý‚µ‚È‚©‚Á‚½——R‚¾‚µA
C#‚Å‚àʼn‚ÍÌ—p‚³‚ê‚È‚©‚Á‚½——R‚¾B(C#‚ÍŠm‚©2,.0‚©‚ç)
“–Žž‚ÍOOP‚Å‘S‚Äs‚¯‚éAŒp³‚·‚ê‚Ί֔ƒ|ƒCƒ“ƒ^‚ð’¼Úˆµ‚¤•K—v‚à–³‚¢A‚ÆŽv‚í‚ê‚Ä‚¢‚½Bi‚Ì‚¾‚ÆŽv‚¤j
‚½‚¾‚»‚ÌŒãA‚¨‚»‚ç‚JS‚̃uƒŒ[ƒN‚É‚æ‚èAƒNƒ[ƒWƒƒ/ƒ‰ƒ€ƒ_‚Ì—L—p«‚ªƒvƒƒOƒ‰ƒ~ƒ“ƒOŠEŒG‚Å”FŽ¯‚³‚ꂽB
–ܘ_Lisper‚Í‚»‚êˆÈ‘O‚©‚炸‚Á‚ƙꂢ‚Ä‚¢‚½‚Ì‚¾‚낤‚ªA¡‚àÌ‚àLisper‚È‚ñ‚Ä‹ó‹C‚¾B
‚»‚µ‚Ä‚ ‚Ü‚è‚É‚àŠ´‰»‚³‚ꂽ˜A’†‚ªClosureŒ¾Œê‚ðƒŠƒŠ[ƒX‚·‚éŽn––B
‚¾‚©‚çA¡‚ÌC‰SŽÒ‚ª‚¢‚«‚È‚èŠÖ”ƒ|ƒCƒ“ƒ^‚ðŽg‚¨‚¤‚Æ‚µ‚Ä‚¢‚é‚Ì‚È‚çA
‚»‚ê‚ÍŠm‚©‚ÉÌ‚ÌC‰SŽÒ‚æ‚è“‚¢‚±‚Æ‚ð‚â‚Á‚Ä‚éB
‚½‚¾‚»‚ê‚ÍŽô•¶ˆµ‚¢‚Å‚¢‚¢‚ÆŽv‚¤‚æB
Ž©•ª‚ª–]‚ÞƒAƒvƒŠ‚ðì‚邱‚Æ‚ª–Ú“I‚Å‚ ‚Á‚ÄAŽô•¶Žg‚¢‚ɂȂ邱‚Æ‚ª–Ú“I‚Å‚Í‚È‚¢B
‚Ü‚ Šm‚©‚ÉA‚±‚±20”N‚ŃvƒƒOƒ‰ƒ~ƒ“ƒO‰ñ‚è‚à‚¾‚¢‚Ô•Ï‚í‚Á‚½‚©‚çA
CŒ¾ŒêŽ©‘Ì‚ÍŠm‚©‚É•Ï‚í‚Á‚Ä–³‚¢‚¯‚Ç‚àAŠw‚Ԃׂ«‚±‚Æ‚ª–¾‚ç‚©‚É‘‚¦‚Ä‚é‚Ì‚ÍŽ–ŽÀ‚¾B
ŠÖ”ƒ|ƒCƒ“ƒ^‚àAOOP‚àAƒNƒ[ƒWƒƒ‚àA•À—ñ‚àAÌ‚ÌŠw¶‚É‚Í•K—v‚È‚©‚Á‚½‚©‚çB Žv‚Á‚½‚æ‚è‚ÍÚ‚µ‚¢‚Ý‚½‚¢‚¾‚µA‚»‚Ì’·•¶‘‚ƒGƒlƒ‹ƒM[‚ÅTypeScript‚à‚Á‚ÆŽg‚¢ž‚ñ‚ÅH
”á”»‚·‚é‚È‚ç‚»‚Ìã‚Ŕᔻ‚µ‚ÄB‚±‚±TSƒXƒŒ‚¾‚©‚çB
Žg‚¤‚Ü‚Å‚à–³‚¢‚Æ‚©‹ZpŽÒ‚炵‚©‚ç‚ÊŽ–Œ¾‚í‚È‚¢‚Å‚ËB
>>617
TS‚ɂ‚¢‚Ä‚ÍA¡‚Ì‚Æ‚±‚ëŽg‚¤—\’è–³‚¢‚©‚ç‚ËB
——R‚ÍŠù‚ÉŒ¾‚Á‚½‚Æ‚¨‚èAuƒXƒ‚[ƒNƒeƒXƒg‚Ü‚Å‚¾‚¯‚ׂ̈ɋLq‚ª‘‚¦‚·‚¬v‚¾‚©‚çB
‚½‚¾TS‚ÍŠm‚©‚É—§‚¿ˆÊ’u‚͈«‚‚È‚¢B
Œ^‚Ì‚¨‚¢‚µ‚¢‚Æ‚±‚낾‚¯‚‚܂ÝH‚¢‚µ‚悤A‚Æ‚¢‚¤ˆÓ}‚ª–¾Šm‚Å‚¢‚¢B
‚»‚à‚»‚àŽg‚Á‚Ä–³‚¢‚©‚çׂ©‚¢‘e‚à’m‚ç‚ñ‚µA”á”»‚µ‚悤‚à–³‚¢B
JS‚ª•³‚È“_‚Í‘½X‚ ‚邯‚ÇA‚»‚ê‚ÍTS‚Å‚Ç‚¤‚É‚©‚È‚é‚à‚Ì‚Å‚à–³‚¢‚µB >>616
>C#‚Å‚àʼn‚ÍÌ—p‚³‚ê‚È‚©‚Á‚½——R‚¾B(C#‚ÍŠm‚©2,.0‚©‚ç)
Delegate‚Í1.0‚©‚ç‚ ‚é‚æ >>620
Šm”F‚µ‚Ä‚Ý‚½‚ª‚Ç‚¤‚â‚ç‚»‚̂悤‚¾B
‚È‚ñ‚¾‚©‚ñ‚¾‚ÅC#‚̓}ƒgƒ‚‚¾‚ÈB ŽÀÛ‚Ì‚Æ‚±‚ëAŠF‚³‚ñts‚ðŽdŽ–‚ÅŽg‚Á‚Ä‚½‚è‚·‚é‚ÌH
Žg‚Á‚Ä‚é‚æB
Œ³XJSŽg‚¢‚¾‚©‚çʼn‚ÍŒ^‚Æí‚Á‚Ă΂©‚è‚ÅŽžŠÔ‚©‚©‚Á‚ĶŽY«‰º‚ª‚Á‚Äh‚©‚Á‚½‚¯‚ÇAŠµ‚ê‚ê‚΂ނµ‚ë‘‚¢‚µAƒŠƒŠ[ƒX‚µ‚½Œã‚̈ÀSŠ´‚ª’iˆá‚¢B
¬‹K–ÍŠJ”‚Å‚à‚±‚ꂾ‚©‚ç‹K–Í‚ª‘å‚«‚¢‚Æ‚³‚ç‚ɉe‹¿‚Í‘å‚«‚¢‚¾‚낤‚Ë
ƒtƒƒ“ƒgƒGƒ“ƒhƒGƒ“ƒWƒjƒA‚â‚Á‚Ă邯‚ÇAReact + TypeScript‚ª“S”‰߂¬‚é
‚±‚êˆÈŠO‚ÅUI‘g‚Þ‹C‚É‚È‚ê‚ñ
ƒT[ƒo[ƒTƒCƒh‚Å‚àŽg‚Á‚Ä‚él‚¢‚é‚Ì‚©‚È
typescript‚ƃT[ƒo[ƒTƒCƒh‚ŃOƒO‚é‚Æ
ƒT[ƒo[ƒTƒCƒh‚Å‚àtypescript Å‚‚½‚º`‚Ý‚½‚¢‚È‹LŽ–o‚Ä‚‚邯‚Ç‚Ù‚ñ‚Ü‚©‚¢‚È‚ÆB
Java,‚â.NETŽg‚Á‚½ã‚Å‚»‚¤”»’f‚µ‚Ă錻ê‚à‚ ‚é‚ñ‚¾‚낤‚©B
‚¢‚Ü.NET‚µ‚©ŒoŒ±‚ª‚È‚¢ƒƒ“ƒo[‚Éts‚ðK“¾‚³‚¹‚é‚©AŽv‚¢Ø‚Á‚ÄBlazor‚ÉŽè‚ðo‚µ‚¿‚Ⴄ‚©”Y‚Ý’†B
ŽIƒTƒCƒh‚Á‚ÄOSƒRƒƒRƒ•Ï‚í‚éƒCƒ[ƒW–³‚¢‚ñ‚¾‚¯‚ÇAJVM‚É‚µ‚ë.net‚É‚µ‚ëVM‚Å“®‚©‚·ˆÓ–¡‚Á‚Ä‚ ‚é‚ÌH
Go‚Æ‚©Rust‚Å—Ç‚¢‚ñ‚¶‚á–³‚¢‚©‚Á‚ÄŽv‚¤‚ñ‚¾‚ªB
Ruby on Rails ‚Å‚ÍABootstrap, React ‚¾‚¯‚ÇA
JavaScript(JS) ‚ÉARuby ‚ÌŽ®‚ð–„‚ßž‚ÞAERB ‚ðŽg‚Á‚ÄAJS‚Ö•ÏŠ·‚·‚éB
a.js.erb
<%= Ruby‚ÌŽ® %>
$( "body" ).append( "<%= j(render partial: 'example_partial') %>" );
‚±‚¤‚¢‚¤‘‚«•û‚ÅATypeScript ‚ðŽg‚¦‚é‚©‚ÈH
>>628
‚Þ‚µ‚ëVMŽg‚Á‚Ä‚é‚©‚Ç‚¤‚©‚ÅŒ¾Œê‚ð‘I‘ð‚·‚éƒP[ƒX‚Ì‚Ù‚¤‚ª‹H >>627
TS‚ÉŽè‚ðo‚·‚Ì‚ÆBlazor‚ÉŽè‚ðo‚·‚Ì‚Å‚Í–`Œ¯“x‡‚¢‚ªˆá‚¢‚·‚¬‚È‚¢H >>632
‚¾‚æ‚Ëc
‚±‚ñ‚È‚Æ‚±‚ë‚Å•·‚‚±‚Æ‚¶‚á‚È‚¢‚©‚à‚µ‚ê‚È‚¢‚ñ‚¾‚¯‚ÇA
ƒT[ƒo[ƒTƒCƒh‚É‹Lq‚³‚ê‚Ä‚éƒNƒ‰ƒX‚Á‚ÄAƒtƒƒ“ƒg‚Å‚àŽg‚¦‚é‚ÌH
‚»‚ê‚Æ‚àƒtƒƒ“ƒg‘¤‚Å‚àtypescript‚Å“¯‚¶ƒNƒ‰ƒX‚ð錾‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢H
Blazor‚̓Nƒ‰ƒX‚ð‹¤—L‚Å‚«‚é‚‚³‚‚Äc‚»‚ê‚̓ƒŠƒbƒg‚Æ‚µ‚Ä‚©‚È‚è‚Å‚©‚¢‚È‚ ‚ÆB >>628
ƒT[ƒo[‚ÍŒ¾Œê‰½‚ðŽg‚¤‚Æ‚µ‚Ä‚à‰¼‘z‰»‘O’ñ‚¾‚ëB >>633
“¯‚¶Œ¾Œê‚¾‚©‚çƒNƒ‰ƒX‘‚¢‚½ƒtƒ@ƒCƒ‹‚𗼕û‚©‚çŽQÆ‚·‚ê‚Ηǂ‚È‚¢H
‚»‚¤‚¢‚¤ˆÓ–¡‚Å‚È‚‚ăT[ƒo‚ƃNƒ‰ƒCƒAƒ“ƒg‚ŃV[ƒ€ƒŒƒX‚ɃCƒ“ƒXƒ^ƒ“ƒX‚ð‚â‚èŽæ‚肵‚½‚¢‚Æ‚©‚Å‚ ‚ê‚΃tƒŒ[ƒ€ƒ[ƒN‚ª‹‚é‚Ì‚Å‚ÍH >>633
—¼•û“¯‚¶Œ¾Œê‚Ȃ狤—Lƒ‰ƒCƒuƒ‰ƒŠ‚Æ‚µ‚Ä‚»‚ꂼ‚ê‚©‚çŽQÆ‚·‚ê‚΂¢‚¢‚¯‚Ç
Œ¾Œê‚ªˆá‚Á‚Ä‚àOpenAPI‚Ý‚½‚¢‚ÌŽg‚Á‚ăR[ƒh¶¬‚·‚ê‚΂¢‚¢‚©‚ç
2“xŽè‘Å‚¿‚·‚é•K—v‚Í‚È‚¢‚©‚à ‚²‚ß‚ñ‚²‚ß‚ñ
ƒT[ƒo[ƒTƒCƒh‚Íasp.net core‚Å‚·
OpenApi‚Æ‚â‚ç‚ðŽg‚¦‚ÎAƒNƒ‰ƒX‚̶¬‚ªŠy‚¿‚ñ‚Ä‚±‚Æ‚Ëc
‚µ‚©‚µ“ñ“xŽèŠÔŠ´‚Í‚·‚²‚¢‚ ‚é‚Èc
‚Å‚àBlazor‚ÉŽè‚ðo‚·ƒŠƒXƒN‚ðl‚¦‚é‚Æ‚Ü‚¾ƒ}ƒV‚©c
Blazor‚àŽg‚Á‚Ă邯‚ÇA‚Ü‚¾.NET5‘Ήž‚̃c[ƒ‹Žü‚肪‘S‘R‚¾‚ß‚È‚ñ‚¾‚æ‚Ëc‹Æ–±‚È‚ç‘f’¼‚ÉTypeScript‚Å‚¢‚¢‚ÆŽv‚¤‚æ
over knight blazor‚‚ç‚¢‚É‚È‚Á‚Ä‚©‚炪–{”ÔB
>>631,634
‚¾‚æ‚ËB
‚Ȃ̂ɉ½‚ÅJava‚ÆC#‰½‚¾‚ëH‚Á‚ÄŽv‚Á‚½B >>634
“Á‚ɉ¼‘z‰»‘O’ñ‚Å’x‚‚È‚é‚̂ɉ½‚ÅŒ¾Œê‚ðƒlƒCƒeƒBƒuƒRƒ“ƒpƒCƒ‰Œ¾Œê‚É‚µ‚È‚¢‚ñ‚¾‚ëH‚ÆB
Ì‚ÍŽÀŽ¿C++‚µ‚©–³‚©‚Á‚½‚È‚çŽd•û‚È‚¢‚Æ‚µ‚ÄA¡‚È‚ç‘I‘ðŽˆ‚Í‚à‚Á‚Æ‚ ‚é‚Ì‚ÉEEEB Go‚̃R[ƒh‚Í‚‹@”\‚Ńtƒ@ƒbƒg‚ȃ‰ƒ“ƒ^ƒCƒ€‚Ɉˑ¶‚µ‚Ä‚¢‚é
ƒ‰ƒ“ƒ^ƒCƒ€‚ƃAƒvƒŠ‚𕪗£‚Å‚«‚È‚¢‚¾‚¯‚ÅAŽÀŽ¿VMŒ¾Œê‚Ý‚½‚¢‚È‚à‚Ì‚¾
ˆê•ûA.NET Core‚̓AƒvƒŠ‚ƃ‰ƒ“ƒ^ƒCƒ€‚ðŽÀsƒtƒ@ƒCƒ‹‚É‘S•”‚Ô‚Á‚±‚ñ‚Å”z•z‚·‚邱‚Æ‚à‰Â”\
]—ˆ‚ÌVMŒ¾Œê‚Æ‚¢‚¤üˆø‚«‚ÍžB–†‚É‚È‚è‚‚‚ ‚é
C#‚¾‚ƃWƒFƒlƒŠƒNƒXŠÖ˜A‚ÍJIT‚É”C‚¹‚½‚Ù‚¤‚ª‘¬‚©‚Á‚½‚è‚Å‚«‚邵A
.NET Core‚ÍReady to Run‚ŃlƒCƒeƒBƒuƒRƒ“ƒpƒCƒ‹‚³‚ꂽƒR[ƒh‚𓯫‚·‚邱‚Æ‚à‚Å‚«‚邼B
‚ [EEEB
‚»‚¤Œ¾‚¦‚ÎC#‚̓lƒCƒeƒBƒu‚É‚àƒRƒ“ƒpƒCƒ‹o—ˆ‚é‚悤‚É‚È‚Á‚½‚ñ‚¾‚Á‚¯EEEB
C#‚ɂ‚¢‚Ä‚Í”[“¾B
Java‚Í‚Ü‚ AƒR[ƒhŽ‘ŽY‚¾‚낤‚µB
JIT‚ɂ‚¢‚Ăͳ’¼”¼•ª‚‚ç‚¢‚µ‚©M‚¶‚Ä‚È‚¢‚ñ‚¾‚¯‚ÇA‚ ‚蓾‚È‚‚Í–³‚¢‚È‚ÆŽv‚Á‚Ä‚éB
D‚âˆê•”‚ÌC++‚Ý‚½‚¢‚ɃRƒ“ƒpƒCƒ‹ŽžŽÀs‚Å‚ÌÅ“K‰»‚Æ‚Ç‚Á‚¿‚ª‘¬‚¢‚ñ‚¾‚낤‚Æ‚©Žv‚¤B
>>643
ƒWƒFƒlƒŠƒNƒX‚Á‚ăRƒ“ƒpƒCƒ‹Žž‚É‰ðŒˆ‚·‚é‚à‚Ì‚¾‚ÆŽv‚Á‚Ä‚½ >>645
ƒRƒ“ƒpƒCƒ‹Žž‚Ì•û‚ª‘½‘‚¢‚¯‚ÇAcpp‚̃WƒFƒlƒŠƒNƒX‚à‚Æ‚¢ƒeƒ“ƒvƒŒ[ƒg‚ÍŒ^‚Ì•ªŠÖ”‚ð—pˆÓ‚·‚é‚Á‚ċ𒼂ȕû–@‚ð‚Æ‚Á‚Ä‚é‚Ì‚ÅAƒoƒCƒiƒŠƒTƒCƒY‚ªƒfƒJ‚‚È‚éB
Œ^î•ñ‚àŽg‚¦‚È‚¢‚µ‚ËB
‚ ‚ÆA•ªŠò–½—ß‚È‚ñ‚©‚Í‚Ç‚Á‚¿‚Ì‚Ù‚¤‚ª•p“x‚‚¢‚©‚Æ‚©Œ©‚ÄA“®“I‚Ƀvƒƒtƒ@ƒCƒ‹Žæ‚è‚È‚ª‚çÅ“K‰»‚µ‚‚ŽÀs‚µ‚Ä‚é‚Ì‚ÅAJIT‚Ì•û‚ª‚æ‚è—Ç‚¢Œ`‚ɂȂ鎖‚à‚ ‚éB
>>646
ƒRƒ“ƒpƒCƒ‹Žž‚É‰ðŒˆ‚Í‚µ‚Ă邯‚ÇAILƒŒƒxƒ‹‚Å‚Í•¡”‚ÌŠÖ”‚ªì‚ç‚ê‚Ä‚é–ó‚Å‚Í‚È‚©‚Á‚½‚Í‚¸B
‚à‚¿‚ë‚ñŽÀsŽž‚É‚ÍAJIT‚ÅŒ^‚²‚Æ‚ÉŠÖ”‚ª¶‚¦‚邱‚Æ‚à‚ ‚éB >>648
‚»‚䂱‚Æ‚ËB‚È‚é‚Ù‚Ç Ž¿–â‚È‚Ì‚Å‚·‚ªTypeScript‚ÅC++‚Ý‚½‚¢‚ÉŠÖ”ˆø”‚ðconst‚É‚·‚é‚É‚Í‚Ç‚¤‚·‚ê‚Î
—Ç‚¢‚ÌH
>>648
>‚ ‚ÆA•ªŠò–½—ß‚È‚ñ‚©‚Í‚Ç‚Á‚¿‚Ì‚Ù‚¤‚ª•p“x‚‚¢‚©‚Æ‚©Œ©‚ÄA“®“I‚Ƀvƒƒtƒ@ƒCƒ‹Žæ‚è‚È‚ª‚çÅ“K‰»‚µ‚‚ŽÀs‚µ‚Ä‚é‚Ì‚ÅAJIT‚Ì•û‚ª‚æ‚è—Ç‚¢Œ`‚ɂȂ鎖‚à‚ ‚éB
ÃÞÏ‚‚ËcH
ƒvƒƒtƒ@ƒCƒ‹Žæ‚éŽèŠÔ‚̓^ƒ_‚¶‚á‚È‚¢‚µA >>652
eslint no-param-reassign Ruby ‚Å‚ÍA1•b‚Å100–œ‰ñƒ‹[ƒv‚·‚é‚ÆA
JIT ‚³‚ê‚ÄA1•b‚Å1,000–œ‰ñƒ‹[ƒv‚³‚ê‚é
>>653
‚Ç‚Á‚©‚Å“Ç‚ñ‚¾‚¯‚Ç‚ÈB
‚Æ‚¢‚¤‚©AAOT‚̧ŒÀŽ–€‚Æ‚µ‚ÄAJIT‚æ‚èŒø—¦‚ªˆ«‚¢‰Â”\«‚̈ê‚‚Ƃµ‚Ä‹“‚°‚ç‚ê‚Ä‚é‚æB >>654
uInvalid option '--param-reassign'v‚Á‚ÄŒ¾‚í‚ꂽ ‚ÂÍ`G)
ESLint: 6.5.1.
‚Ä‚¢‚¤‚©‚Å‚«‚½‚Æ‚µ‚Ä–³·•Ê‚Éconnst‚Æ‚¢‚¤‚Ì‚à‚»‚ê‚Í‚»‚ê‚ÅC++‚ƈႤŠóƒKƒXorz webpack@5A‚ß‚Á‚¿‚á”j‰ó“I‚â‚ñc
JavaScript‚©‚çTypeScript‚Ö‚Ì‘‚«Š·‚¦µÜÀ_(^o^)^
JavaScrpitʼn‚É’m‚Á‚ĈꃖŒŽ‚Å‘S•”‘‚¢‚½‚©‚ç3000s‚®‚ç‚¢‚¾‚낤‚ÆŽv‚Á‚Ä‚¢‚½‚ç
‚ ‚Æ‚Å‚¿‚á‚ñ‚Æ”‚¦‚½‚ç8790s‚â‚Á‚½orz
ŽÀì‹Æ4“ú‚©‚©‚Á‚½
‚±‚±‚Å4“ú‚Æ‚¢‚¤‚Ì‚Í4“ú~8H‚Å‚Í‚È‚‚Ä4“ú~24H‚̈Ómi‚’‚™
‰³
TypeScript‚â‚Á‚Ä‚È‚¢ ‚É‘‚¢‚½ƒR[ƒh‚Á‚ÄTypeScript‚Ì‚±‚ƈӎ¯‚µ‚Ä‚È‚‚ăIƒuƒWƒFƒNƒg‚ÌŒ`‚ð“®“I‚É•Ï‚¦‚½‚肵‚È‚¢H
Ž©•ª‚ª‚â‚Á‚½‚Æ‚«‚Í‚»‚Ì‚¹‚¢‚Å‚¾‚¢‚ÔŽžŠÔ‚©‚©‚Á‚½‚í
prototype•¶‚Å–³—–î—class‚É‚µ‚Ä‚¢‚½‚â‚‚ð
‚³‚ç‚ÉŠî’êƒNƒ‰ƒXi‚É‚ ‚½‚éÌÞÂj‚ÌŠ—L‚Å‚à‚Á‚ÄŒp³‚ð•\Œ»‚µ‚Ä‚¢‚½‚â‚‚̕’Ê‚Ìclass‚ÆŒp³‚Ö‚Ì‘‚«Š·‚¦‚ª‹ê’É‚â‚Á‚½A
‹@ŠB“I‚Æ‚Í‚¢‚¦Ž©“®‰»‚Å‚«‚é‚Ù‚Ç’Pƒ‚É‚Ís‚©‚¸‹ê’É‚â‚Á‚½A
Žè»ƒCƒxƒ“ƒg‚̃Cƒ“ƒ^[ƒtƒF[ƒX‚ªŽÀÛ‰½‚É‚È‚é‚Ì‚©‚ª‚®‚¿‚á‚炯‚Ä‚¢‚½‚Ì‚Å3Ží—ނ̃Cƒ“ƒ^[ƒtƒF[ƒX‚ÌOR‚Å
•\Œ»‚Å‚«‚é‚Æܶق܂ŎŽsöŒë‚ð—v‚µ‚½A
‚ ‚Æ‚Í‚¾‚¢‚½‚¢‚¤‚Ü‚¢‚®‚ ‚¢‚ÉÀ‚¯‚½
‚Æ‚í‚¢‚¦VSCode‚Ì‹—͂ȃCƒ“ƒeƒŠƒZƒ“ƒX‚ƃŠƒAƒ‹ƒ^ƒCƒ€ƒGƒ‰[•ñiƒXƒNƒ[ƒ‹ƒo[‚Ì‚Æ‚±‚낪Ԃ‚È‚é‚â‚Âj‚ª–³‚©‚Á‚½‚ç
“ž’ꊮ‹•s‰Â”\‚È‚Æ‚±‚ë‚â‚Á‚½AAA
webpackŽg—p
ƒEƒ“ƒR[ƒh‚ÈJS‚ðTS‚É•Ï‚¦‚邱‚Æ‚Ål‚Í‹‚‚È‚é‚Ì‚¾
‚¨‚Ü‚¦‚Í‚Ü‚½‹‚‚È‚Á‚½
ˆÏ÷‚©‚çŒp³‚ÉØ‚è‘Ö‚¦‚½‚ç‚»‚è‚áh‚¢‚Á‚µ‚åB
‰³`
delegation over inheritance ‚Á‚ÄŒ¾‚¤‚µ‚È
Github‚Å‚àTs‚Í’è‹`‰ÓŠ‚ɃWƒƒƒ“ƒv‚Å‚«‚½‚è‚·‚é‚ñ‚¾‚È
‹‚¢
¡‚©‚çTypeScript‚â‚é‚È‚çDeno‚Å‚¢[‚ÌH
‚ ‚ÁƒMƒƒƒO‚¶‚á‚È‚¢‚Å‚·^–Ê–Ú‚ÈŽ¿–â
ì‚Á‚½–{l‚Í ƒfƒm ‚Á‚Ä”‰¹‚µ‚Ä‚é‚悤‚É•·‚±‚¦‚é
Deno‚ ‚ñ‚Ü‚èÚ‚µ‚‚È‚¢‚¯‚ÇA‰½‚â‚肽‚¢‚©‚É‚à‚æ‚é‚ÆŽv‚¤
WebŠJ”‚ð‚·‚é•ª‚É‚Í‚Ü‚¾Node‚È‚ñ‚¶‚á‚È‚¢‚©‚È
Žü•Ó‚̃c[ƒ‹‚⃉ƒCƒuƒ‰ƒŠ‚ª‘µ‚Á‚Ä‚é‚Ì‚Å
CLIƒc[ƒ‹‚Æ‚©‚È‚çDeno‚Å‚¢[‚ñ‚Å‚ÌH
>>669
jsx/tsx ‚Å‚àƒCƒP‚é‚悤‚É‚È‚Á‚½‚Ë ‚Ç‚ñ‚Ç‚ñ•¡ŽG‚É‚È‚é‚È‚Ÿ
‚‚¢‚Ä‚¢‚¯‚Ü‚Ö‚ñ‚í
‹t‚Ƀo[ƒWƒ‡ƒ“ƒAƒbƒv‚ŃVƒ“ƒvƒ‹‚É‚È‚Á‚Ä‚¢‚Œ¾Œê‚Á‚Ä‚ ‚é‚ÌH
ŒÝŠ·‚ðŠ®‘S‚ÉØ‚é‚悤‚ÈŒ¾Œê‚È‚ç‰Â”\‚¾‚낤‚¯‚Ç
>>677
Scheme‚ª¬‚³‚‚Í‚È‚Á‚½‚È
‚ÜA‘å‹K–Í‚ÉŽg‚í‚ê‚Ă錾Œê‚¶‚á‚È‚¢‚©‚ço—ˆ‚éŒ|“–‚¾ Œ¾Œê‹@”\‚ª‘‚¦‚½‚©‚ç‚ÆŒ¾‚Á‚Ä‘S•”Žg‚¤•K—v‚Í‚È‚¢‚µ‚È
‚½‚Ü‚É‚Ç‚±‚©‚ÅŽg‚í‚ê‚Ä‚é‚Ì‚ðŒ©‚Ä‚ ‚ê‚Á‚Ä‚È‚Á‚½‚ç’²‚ׂ邂炢‚Å—Ç‚¢
JavaScript‚Í“®“IŒ^‚¾‚¯‚ÇA“®“IŒ^‚͈ӎ¯‚µ‚È‚‚Ä‚à•¡ŽG‚ÈŽ–‚ªo—ˆ‚Ä‚µ‚Ü‚¤
TypeScript‚Í‚»‚ê‚ç‚ɑ΂µ‚ĉ½‚Æ‚µ‚Ä‚Å‚àŒ^‚ð•t‚¯‚½‚¢‚ñ‚¾‚æ
‚»‚ꂾ‚¯‚ÌŽ–
JavaScriptŽ©‘͉̂½‚à•Ï‚í‚Á‚Ä‚È‚¢
‚à‚¤altJS•—WebAssemblyƒRƒ“ƒpƒCƒ‰‚É‚µ‚Ä
ƒRƒ“ƒpƒCƒ‰Œ^‚Ù¶ŽY«’á‚¢‚æB
C++•À‚ɃRƒ“ƒpƒCƒ‹’x‚‚È‚Á‚½‚肵‚Ä‚ËB
ŽÀŽ¿ƒ}ƒNƒ‚¾‚©‚çŽÀsŽž‚Í‘¬‚¢‚ñ‚¿‚ႤH
>>678
‚ ‚ꬂ³‚‚È‚Á‚½‚Á‚ÄŒ¾‚¦‚ñ‚ÌH
r7rs ‚È‚ñ‚Ä common lisp‚æ‚è‚Å‚©‚¢‚¶‚á‚ñB
ƒRƒA‚¾‚¯‚Ȃ笂³‚¢‚¾‚낤‚¯‚ǃRƒA‚¾‚¯‚¶‚á‚È‚ñ‚à‚Å‚«‚ñ‚¾‚ëB ‚¤‚¿‚ÌtsƒvƒƒWƒFƒNƒgAtslint‚à“ü‚ê‚ărƒ‹ƒh‚É10•ª‚‚ç‚¢‚©‚©‚Á‚Ä‚éB
‘O‚É -incremental ŽŽ‚µ‚Ä‚Ý‚Ä‚È‚ñ‚©‚Ì——R‚Å’f”O‚µ‚½‚ñ‚¾‚æ‚ÈB
‚à‚¤ˆê“xƒgƒ‰ƒC‚µ‚Ä‚Ý‚é‚©B
ƒXƒNƒŠƒvƒg‚̃ƒŠƒbƒgŠ®‘S‚ÉŽ¸‚Á‚Ăăƒƒ^
ƒXƒNƒŠƒvƒg‚̓rƒ‹ƒh‚µ‚¿‚á‚¢‚¯‚È‚¢‚ñ‚¾‚æ
IDE‚Ńpƒ‰ƒŒƒ‹Lint‚·‚é‚®‚ç‚¢‚È‚ç‚¢‚¢‚¯‚Ç‚È
ƒrƒ‹ƒh‚µ‚È‚¢‚Æ“®‚«‚Ü‚¹‚ñ‚¶‚á–{––“]“|‚Å‚È‚É‚ª‚È‚ñ‚¾‚©
ƒrƒ‹ƒh‚·‚é‚È‚çC#‚Æ‚©Go‚Å‚â‚è‚á‚¢‚¢
ts-node‚È‚çƒrƒ‹ƒh•s—v‚¾‚¯‚ÇA‚»‚ê‚Ƃ͈Ⴄ˜b‚©
TypeScript‚𒼂ɎÀs‚Å‚«‚鈗Œn‚Í¡Œã‚àŒ»‚ê‚È‚¢‚¾‚낤‚È
>>689
„ƒrƒ‹ƒh‚·‚é‚È‚çC#‚Æ‚©Go‚Å‚â‚è‚á‚¢‚¢
ƒuƒ‰ƒEƒU‚ÅŽg‚¤‚Ì‚ªŒ»ŽÀ“I‚¶‚á‚È‚¢ ‚»‚à‚»‚àƒXƒNƒŠƒvƒgŒ¾Œê‚ŃXƒNƒŠƒvƒgŒ¾ŒêŒü‚«‚¶‚á‚È‚¢‘å‹K–Í‚È‚±‚Æ‚ð‚â‚낤‚Æ‚µ‚Ä‚é‚©‚炱‚ꂪ‚Å‚«‚½‚킯‚ÅAŒ¾Œê‚Ì‚¹‚¢‚É‚·‚é‚͈̂Ⴄ
‚»‚à‚»‚à¡‚ÌWebiƒAƒvƒŠj‚ÍTSŽg‚Á‚Ä‚È‚‚Ä‚àƒrƒ‹ƒh‚µ‚Ä‚é‚à‚̂΂Á‚©‚肾‚µ
‚Ü‚ A‚ׂ‚ÉuƒXƒNƒŠƒvƒg‚̃ƒŠƒbƒgv‚ðŠú‘Ò‚µ‚Äts‚ðŽg‚Á‚Ä‚é‚킯‚¶‚á‚È‚¢‚µ‚ÈB
‚Æ‚Í‚¢‚¦ƒrƒ‹ƒhŽžŠÔ‚ª’Zk‚Å‚«‚é‚È‚ç‚»‚ê‚ɉz‚µ‚½‚±‚Æ‚Í‚È‚¢‚ªB
watchŽg‚¤‚©‚çƒrƒ‹ƒh‘¬“x‚»‚ñ‚È‚É‹C‚É‚È‚ç‚È‚¢‚È‚Ÿ
>>687
RSR7-small‚Í5‚ðƒx[ƒX‚É‚µ‚Ä‚é‚©‚çA‚»‚ê‚Å‚È‚ñ‚ào—ˆ‚È‚¢‚Æ‚©Œ¾‚Á‚½‚çA‚»‚ê‚Ü‚Å‚ÌScheme‚ð‘S”ے肶‚á‚ñw ‚¢‚Á‚»ƒKƒ`‚Ń}ƒNƒ“ü‚ê‚Ä‚‚ꂽ‚çFX’»‚é‚È‚ŸB¦‚“Ç‚Ý‚É‚‚‚Ȃ邾‚낤‚¯‚ÇB
‚»‚±‚Ü‚Ås‚©‚È‚‚Æ‚àAi“à•”“I‚É•¡”‚ÌŠÖ”‚ðŽ‚ÂjŠÖ”ƒI[ƒo[ƒ[ƒh‚Æ‚©—~‚µ‚¢‚©‚à
ƒuƒ‰ƒEƒUŽg‚Á‚Ä‚Ä‚æ‚ Webƒy[ƒW ‚ªŒÅ‚܂邱‚Æ‚ª‚ ‚é‚©‚çA‚¿‚á‚ñ‚ÆUIƒXƒŒƒbƒhˆÈŠO‚ň—‚µ‚ë‚æ‚Æ‚æ‚Žv‚Á‚Ä‚½‚ª
JavaScript Ž©‘Ì‚ªƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚¾‚Á‚½‚Ì‚Ë
WebWoker ‚Æ‚©‚¢‚¤‚Ì‚à‚ ‚é‚Ý‚½‚¢‚¾‚ªAMDNŒ©‚é‚ÉA
Œ¾Œê‘¤‚Å‚ª‚Á‚‚èŠÇ—‚·‚é‚©‚çƒXƒŒƒbƒhƒZ[ƒt‚ ‚ñ‚Ü‚èl—¶‚µ‚È‚‚Ä‚à‚¢‚¢‚Ý‚½‚¢‚¾‚µA‚±‚ê‚ÍŠy‚Å‚¢‚¢‚í
Java ‚â‚Á‚Ä‚ÄAƒNƒŠƒeƒBƒJƒ‹ƒZƒNƒVƒ‡ƒ“‚̈—‚ªˆê”ÔŒ™‚¢‚¾‚Á‚½
ƒfƒbƒhƒƒbƒN‚ÌŒ´ˆö’T‚·‚Ì‘å•Ï‚·‚¬‚½
‚»‚à‚»‚àIO‘Ò‚¿‚ɃXƒŒƒbƒh‚ðŽg‚¤‚Ì‚ªƒiƒ“ƒZƒ“ƒX‚¾‚Á‚½‚ñ‚¾‚æ‚È
‚Ü‚Ÿ‚Å‚àA
JavaScript ‚̃\[ƒXƒR[ƒh“à‚É‘‚¢‚½‚à‚Ì‚ª‘S•”“¯‚¶ƒXƒŒƒbƒh‚Å‘–‚Á‚Ä‚é
‚Á‚Ä‚¾‚¯‚ÅAsetTimeout ‚Æ‚©‚ÌŽÀ‘•“à‚Å‚Í•’ʂɕʃXƒŒƒbƒh‘–‚Á‚Ä‚é‚Ì‚©B
‚»‚è‚á‚»‚¤‚¾‚æ‚ÈA‚»‚¤‚µ‚È‚¢‚Æ”ñ“¯Šúˆ—‚È‚ñ‚Ä‚Ç‚¤‚ ‚ª‚¢‚Ä‚à•s‰Â”\‚¾‚à‚Ì‚ËB
”ñ“¯Šúˆ—‚̓XƒŒƒbƒh‚ÌꇂƂ»‚¤‚Å‚È‚¢ê‡‚Ì2Ží—Þ‚ ‚é
‚»‚¤‚Å‚È‚¢ê‡‚ÍŠî–{“I‚Ƀn[ƒhƒEƒFƒAŠ„‚èž‚Ý‚ÅŽÀ‘•‚³‚ê‚Ä‚é
ƒ^ƒCƒ}[‚Æ‚©’ÊMˆ—‚Æ‚©
ƒtƒ@ƒCƒ‹ƒAƒNƒZƒX‚àOS–ˆ‚É”ñ“¯ŠúAPI‚ª—L‚邯‚ÇAlibuv‚͌݊·«‚ׂ̈Ɋ¸‚¦‚Ä“¯ŠúAPI‚ðŽg‚¤ˆ—‚ðƒXƒŒƒbƒhƒv[ƒ‹‚É“Š‚°‚Ä‚¢‚é‚悤‚¾
setTimeout‚̓XƒŒƒbƒh‚ðŽg‚Á‚Ä‚È‚¢—l‚ÉŽv‚¤‚¯‚ÇAŒ‹‹Ç‚ÌŠƒ†[ƒU[‘¤‚Å‚»‚ê‚ð’m‚ép‚ª–³‚¢
>>698‚Ì–â‘è‚̓XƒŒƒbƒh‚ª‚Ç‚¤‚Æ‚©ŠÖŒW‚È‚‚ÄAhtml’†‚Ì‚ ‚éŒÂŠ‚Ì“à—e‚ªŒˆ‚Ü‚ç‚È‚¢‚Æ
‘S‘̂̃Œƒ“ƒ_ƒŠƒ“ƒO‚ª‚Å‚«‚È‚¢\‘¢‚É‚È‚Á‚Ä‚¢‚½‚Æ‚©Ajs‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚È‚¢‚Æ
ƒŒƒ“ƒ_ƒŠƒ“ƒO‚³‚ê‚È‚¢‚Ì‚É‚»‚̎擾‚ÉŽžŠÔ‚ª‚©‚©‚Á‚Ä‚¢‚é‚Æ‚©‚»‚ñ‚È‚Æ‚±‚낾‚낤‚ÈB Å‹ß‚È‚¢‚悤‚ÉŽv‚¤‚¯‚ÇA‚P‚‚̃y[ƒW‚ªƒuƒ‰ƒEƒU‘S‘Ì‚ðƒXƒg[ƒ‹‚³‚¹‚邱‚Æ‚ª‘½‚©‚Á‚½‚Ì‚æ
‚»‚ñ‚Ńuƒ‰ƒEƒU‚ð‹N“®‚µ’¼‚³‚È‚¯‚ê‚΂¢‚¯‚È‚¢
‚»‚ÌŒ´ˆö‚ªAJS ‚̃XƒŒƒbƒh‚Æ ƒuƒ‰ƒEƒU‚̃Œƒ“ƒ_ƒŠƒ“ƒOƒXƒŒƒbƒhiUIƒXƒŒƒbƒhj‚ª“¯‚¶ƒXƒŒƒbƒh‚ð‹¤—L‚µ‚Ă邱‚Æ‚É‚ ‚é
DOM ‘‚«Š·‚¦‚Ä‚éÅ’†‚É ƒŒƒ“ƒ_ƒŠƒ“ƒO‚³‚ê‚¿‚Ⴄ‚ÆAƒy[ƒWƒŒƒCƒAƒEƒg‚ª‚®‚¿‚á‚®‚¿‚á‚É‚È‚é‚©‚çA‘S•”“¯‚¶ƒXƒŒƒbƒh‚ň—‚µ‚Ä‚é‚ñ‚¾‚¯‚ÇA
JS‚̈—‚ÅUI‚ªŒÅ‚Ü‚é‚Ì‚ð–h‚®‚É‚ÍAJS ‚Ì DOM ‘‚«Š·‚¦uˆÈŠOv‚Ì‘€ì‚ð•ÊƒXƒŒƒbƒh‚Å‚â‚Á‚ÄAƒŒƒ“ƒ_ƒŠƒ“ƒOƒXƒŒƒbƒh‚Æ“¯Šúˆ—‚·‚ê‚΂¢‚¢
iJava ‚Ì synchronize ‚Æ‚©‚Ì—v—Ìj
DOM Ž©‘Ì‚ª ƒŒƒ“ƒ_ƒŠƒ“ƒOƒXƒŒƒbƒh‚É‘®‚µ‚Ä‚é‚Ì‚ÍA‚µ‚傤‚ª‚È‚¢‚ÆŽv‚¤
ÌAƒ}ƒ‹ƒ`ƒXƒŒƒbƒh‚Å“®ì‚·‚é UI ƒ‰ƒCƒuƒ‰ƒŠ ‚Ì‘½‚‚ªƒfƒbƒhƒƒbƒN‚»‚Ì‘¼‚̃oƒO‚Å‚Ç‚¤‚É‚à‚È‚ç‚È‚‚È‚Á‚Ä”pŠü‚³‚ꂽiJava ‚Å‚¢‚¤ AWTj
‚Æ‚¢‚¤‚±‚Æ‚ÅAUI ‚ªŒÅ‚Ü‚é‚̂ɂ̓XƒŒƒbƒh‚ÍŠÖŒW‚ ‚é‚ÆŽv‚¤‚Ì‚æ
‚Ü‚Ÿ‘‚«•û‚ªˆ«‚©‚Á‚½‚Ì‚©‚à‚µ‚ê‚ñ‚ª
‚ ‚ÆAJS ‚ªƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚È‚Ì‚Í‚Æ‚Ä‚à—Ç‚¢‚±‚Æ‚¾‚ÆŽv‚Á‚Ä‚é‚©‚ç‚ËAŽ©•ª‚Í
ƒ}ƒ‹ƒ`ƒXƒŒƒbƒh‰»‚µ‚½‚çA‚Ç‚Ì‚Ý‚¿“¯Šú‰»ˆ—‚ÉŽ¸”s‚µ‚ÄAƒfƒbƒhƒƒbƒN‚Å¡‚æ‚è‚àŒÅ‚܂邱‚Æ‘½‚‚Ȃ邾‚낤‚©‚ç
ŽQl‚É‚µ‚½F
https://stackoverflow.com/questions/30932870/why-doesnt-javascript-get-its-own-thread-in-common-browsers JS ‚Åd‚߂̈—‚ð‚µ‚½‚èƒoƒO‚ª‚ ‚Á‚Ä‚àAƒŒƒ“ƒ_ƒŠƒ“ƒOƒXƒŒƒbƒh‚Æ•ª—£‚³‚ê‚Ä‚ê‚ÎA
‚È‚‚Æ‚à UI‚ªŒÅ‚܂邱‚Æ‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚ËiƒfƒbƒhƒƒbƒN‚ª‚È‚¯‚ê‚Îj
‚ ‚ÆAã‚Åʼn‚É‘‚¢‚½Aƒuƒ‰ƒEƒU‘S‘Ì‚ªŒÅ‚Ü‚é‚Á‚Ęb‚͌ꕾ‚ ‚Á‚½‚©‚à‚µ‚ê‚È‚¢
ƒuƒ‰ƒEƒU‚ÌŠeƒ^ƒu‚̃Œƒ“ƒ_ƒŠƒ“ƒOƒXƒŒƒbƒh‚ÆAƒuƒ‰ƒEƒU‘S‘Ì‚ÌUIƒXƒŒƒbƒh‚ÍA‘½•ª•ª‚¯‚ç‚ê‚Ä‚é‚ñ‚¾‚æ‚ËH
Œã‚Å‚¿‚á‚ñ‚Æ’²‚ׂ܂·
firefox‚ªƒtƒŠ[ƒY‚·‚邱‚Æ‚ÍÅ‹ß‚¿‚å‚‚¿‚å‚‚ ‚Á‚½‚È
edge‚Éæ‚芷‚¦‚½‚ç‚«‚ê‚¢‚³‚Á‚Ï‚è’¼‚Á‚½
ff‚Í‚à‚¤‚¾‚ß‚©‚à‚í‚©‚ç‚ñ‚Ë
uFirefox ‚ª Tab ‚²‚ƂɃXƒŒƒbƒhv‚Á‚Ä‘‚«‚½‚©‚Á‚½
‚»‚̃XƒŒƒbƒh‚à Main Thread = UI Thread iDOM ‘€ì‚Æ JS ŽÀsj‚ª‚PŒÂ‚Á‚ĈӖ¡‚ÅA
Raster Thread ‚Æ‚©AComposer Thread ‚Æ‚©‘½•ª‘¼‚É‚à‚¢‚ë‚¢‚ëƒXƒŒƒbƒhì‚é
‚·‚Ý‚Ü‚¹‚ñATypeScript‚Á‚ÄŠJ”’†‚̓Rƒ“ƒpƒCƒ‹‚È‚µ‚Ńuƒ‰ƒEƒU‚Å‚·‚®‚É•ÏX‚Ì“®ìŠm”F‚ð‚Å‚«‚Ü‚·‚©H
‚»‚¤‚¢‚¤Žž‘オ—ˆ‚é‚Æ‚¢‚¢‚Ë
Chromium Edge ‚ÅAYouTube ‚ðŒ©‚ÄA
“®‰æ‚ðA5•bæ‚Öi‚ß‚½‚è‚·‚é‚ÆAƒtƒŠ[ƒY‚·‚é
WebWorker‚ÍŠ®‘S‚ɃXƒŒƒbƒh‚¾‚¼
X‚ÉAtomics‚ðŽg‚¦‚΃XƒŒƒbƒhŠÔ‚Åatomic‚ȃf[ƒ^XV‚ªo—ˆ‚é
WebWorkerŽg‚¢‚â‚·‚‚ÄD‚«B•À—ñˆ—–Ê“|‚‚³‚¢‚©‚炽‚Ü‚É‚µ‚©Žg‚í‚È‚¢‚¯‚Ç
‚µ‚©‚µASharedArrayBuffer‚ÍSpectre‚Ì‚¹‚¢‚Å‚Ù‚ÚŽg‚¦‚È‚¢ó‘Ô‚¾‚¯‚Ç‚Ë
Spectre‚ɑΉž‚µ‚½CPU‚ª•‹y‚µ‚«‚ç‚È‚¢ŒÀ‚è—LŒø‚É‚³‚ê‚鎖‚Í–³‚¢
Web‚Å‚Í‚à‚Í‚â—]Œv‚È‹@”\’ljÁ‚̓ZƒLƒ…ƒŠƒeƒB[ƒz[ƒ‹‚ÌŒ³‚Æ‚¢‚¤”FŽ¯‚Å‚±‚êˆÈãi‰»‚·‚邱‚Æ‚à–³‚¢‚¾‚낤
‚½‚¾AƒXƒgƒA‚©‚çƒCƒ“ƒXƒg[ƒ‹‚·‚éPWA‚̓lƒCƒeƒBƒuƒAƒvƒŠ‚Ì‘ã‚í‚肾‚©‚çA‹@”\’ljÁ‚µ‚Ä‚¢‚‚ÆŽv‚í‚ê‚é
ƒXƒgƒA‚ÌŽû‰vŒ¸‚ç‚·‚Ìâ‘΋–‚³‚È‚¢ƒ}ƒ“‚̃Aƒbƒvƒ‹
‚–‚“
Web‚©‚çî•ñ‹z‚¢‚½‚¢ƒ}ƒ“‚̃O[ƒOƒ‹
promisei‚à‚µ‚‚Íasync/awaitj‚ªŽg‚¦‚½‚çƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Å‚àŽÀŽ¿•Ê’i¢‚ç‚È‚¢
ŠóƒKƒX
WebWorker‚Æ‚©’m‚ç‚ñ‚©‚Á‚½DDD
ƒƒCƒ“‚Æó‘Ô‚ð‹¤—L‚µ‚È‚¢‚Ì‚ª–¾Šm‚È‚ç•Ö—˜‚»‚¤‚¾‚È
‚³‚à‚È‚‚ÎAsync/Await‚©
I/O bound‚ÍPromise‚Å‚¢‚¢‚¯‚Ç
CPU bound‚ÍPromise‚¶‚Ⴞ‚ß‚¾‚©‚çWebWorkerŽg‚¤
ƒ}ƒ‹ƒ`ƒRƒA‚Ì—LŒøŠˆ—p
>>715
‚»‚ê‚Í—L‚é
Apple‚̓uƒ‰ƒEƒU‚Ìi‰»‚ðŠ®‘S‚ɔے肵‚½(WebUSB‚Æ‚©ŽÀ‘•‚µ‚È‚¢‚Æ–¾Œ¾‚µ‚½)
Œš‚Ä‘O‚̓ZƒLƒ…ƒŠƒeƒB[‚¾‚¯‚ÇA^ŽÀ‚ÍPWA‚ªƒlƒCƒeƒBƒuƒAƒvƒŠ‚Æ“¯“™‚ÌŽ–‚ªo—ˆ‚é‚ÆAppleÅ‚ªŽæ‚ê‚È‚‚È‚é‚©‚炾‚낤‚Ë Å‚È‚çÅ‚Å‘f’¼‚É•¥‚¦‚΂¢‚¢
‚»‚ê‚Å‚¢‚¢»•i‚ªŽg‚¦‚é‚È‚ç‚¢‚¢‚±‚Æ‚¾
NHK‚̂悤‚È‚à‚Ì‚¾‚È
Apple‚ªÌ—p‚µ‚È‚¢Ž–‚Å‘«•À‚Ý‚ª‘µ‚í‚È‚‚È‚Á‚ÄAWeb‘S‘̂ɉe‹¿‚·‚é‚Æ‚¢‚¤cc
🍎‚É‘«•À‚𑵂݂¦‚È‚¢˜A’†‚ª‚æ‚‚È‚¢
SharedArrayBuffer‚Ì‘ã‘ÖŽè’i‚Á‚Ä–³‚¢‚ÌH
Œ‹‹Ç‚±‚ê‚Í‰ðŒˆ‚·‚é–â‘è‚È‚ÌH
WebUSB‚ÉŠÖ‚µ‚Ä‚ÍFireFox‚àŽÀ‘•‚·‚é—\’è‚Í‚È‚¢‚Ì‚Å
‘«•À‚𑵂݂¦‚Ä‚È‚¢‚Ì‚ÍChrome
–Ú‚Ì‘O‚É‹@Ší‚ª‚ ‚Á‚ăXƒ}ƒz‚©‚çƒRƒ“ƒgƒ[ƒ‹‚µ‚½‚¢—v‹‚͈ê”Ê“I‚¾‚ÆŽv‚¤‚¯‚ÇAUSB‚̔Ԇ‚ðŒÂl‚ÅŽæ‚ê‚È‚‚È‚Á‚½‚Ì‚ÅAƒuƒ‰ƒEƒU‚ÉŽÀ‘•‚·‚éˆÓ–¡‚Í”–‚ꂽ‚©‚à‚µ‚ê‚È‚¢‚Å‚·‚ËB
‚±‚±‚¾‚¯‚Íapple‚ð‰ž‰‡‚·‚é‚í
Á”ïŽÒ‚Æ‚µ‚ăuƒ‰ƒEƒU‚É‚Ç‚ñ‚Ç‚ñ•Ï‚È‹@”\‚‚¯‚é‚ñ‚¶‚á‚Ë‚¥
IoT“I‚ȈӖ¡‡‚¢‚Å•K—v‚Æ‚·‚él‚½‚¿‚ª‹‚é‚ñ‚Å‚·‚æB
Ž©•ª‚ÍŒ©‚È‚¢‚©‚ç“®‰æ‹@”\‚ð•t‚¯‚é‚È‚Æ‚©A•·‚©‚È‚¢‚©‚特‹@”\‚ð•t‚¯‚é‚È‚Á‚Ä‚¢‚¤‚Ì‚Æ“¯‚¶‚Å‚ÍH
USB API‚ðƒT[ƒu‚µ‚Äajax‚Ålocalhost‚Æ’ÊM‚Å‚¢‚¢‚¶‚á‚ñ
‚í‚´‚í‚´ƒuƒ‰ƒEƒU‚ªƒTƒ|[ƒg‚·‚邱‚Æ‚¶‚á‚È‚¢
‚Ü‚ •S•à÷‚Á‚Ä悹‚é‚Æ‚µ‚Ä‚àŠg’£‚Å‚¢‚¢‚æ‚È
•W€‰»‚µ‚悤‚Æ‚·‚é‚Ì‚Í‚Å‚µ‚á‚΂肷‚¬
ƒuƒ‰ƒEƒU‚ª‚ñ‚΂Á‚Ä—~‚µ‚¢
React + TS Å‚
swift + storyboard ‚Æ‚©‚¢‚¤•³ƒIƒu•³‚Ì‚»‚Ñ‚¦—§‚•³‚Ü‚Ý‚ê‚Í2“x‚ÆG‚肽‚‚È‚¢
PWA‚Ì’è‹`‚ª¡ˆê”™‘R‚Æ‚µ‚Ä‚é‚©‚çA¡Œã‚Í‚»‚̕ӂ肪i‰»‚µ‚Ä‚¢‚‚ÆŽv‚í‚ê‚é
‚ÅAPWA‚Å‚È‚¢ê‡‚ÍJavaScript‚Ì“®ì‚ÍŽv‚¢‚Á‚«‚觌À‚³‚ê‚邾‚낤‚Ë
‚ÜA‚»‚ê‚Å—Ç‚¢‚ÆŽv‚¤
> ‚í‚´‚í‚´ƒuƒ‰ƒEƒU‚ªƒTƒ|[ƒg‚·‚邱‚Æ‚¶‚á‚È‚¢
‚Ù‚ñ‚Æ‚±‚ê
‚È‚º‚í‚´‚í‚´ƒuƒ‰ƒEƒU‚Å‚È‚ñ‚Å‚à‚â‚낤‚Æ‚·‚é‚Ì‚©
IoT‚È‚ñ‚¾‚©‚畒ʂɃc[ƒ‹‚Æ‚©ƒAƒvƒŠ‚Æ‚©ƒhƒ‰ƒCƒo‘‚¯‚æ‚Æ
Œ‹‹Ç‚ ‚ ‚¢‚¤‚Ì‚Á‚Äu‚·‚°‚¦‚¦ƒuƒ‰ƒEƒU‚Å‚±‚ñ‚È‚±‚Æ‚Å‚«‚½!v
‚¢‚¢‚½‚¢‚¾‚¯‚¿‚Ⴄ‚ñ‚©A‚Ý‚½‚¢‚È‚Ì‚ªƒ}ƒW‘½‚¢
ƒuƒ‰ƒEƒU‚ª‚‹@”\‰»‚µ‚·‚¬‚ăuƒ‰ƒEƒU‚³‚¦“®ì‚·‚è‚á‚¢‚¢Š´‚¶‚É‚È‚Á‚Ä‚«‚Ä‚é
ÅI“I‚ÉOS=ƒuƒ‰ƒEƒU‚Ü‚Åi‰»‚µ‚©‚Ë‚È‚¢
ƒ‚ƒoƒCƒ‹—pOS‚ª‚»‚ñ‚È‚©‚ñ‚¶
ƒAƒvƒŠ‚ð‘S‚ăTƒ“ƒhƒ{ƒbƒNƒX‚ÅŠu—£‚µ‚Äo—ˆ‚邱‚Æ‚ð§ŒÀ
‚¶‚Á‚‚莞ŠÔ‚ð‚©‚¯‚Äo—ˆ‚邱‚Æ‚ð‰ð•ú‚µ‚Ä‚«‚½
ƒSƒ~ƒTƒCƒg‚Ìé“`‚·‚ñ‚ȃJƒX
‚±‚êPromise‚ÆWeb Worker‚̃}ƒ‹ƒ`ƒXƒŒƒbƒh‚ŃpƒYƒ‹‚𶬂µ‚Ä‚éB‘g‚݇‚킹–³ŒÀ‘åB‚µ‚©‚àInternet Explorer‚Å‚à“®ì‚·‚éB‚Ü‚ A‘fl‚ɂ͂ЂƖڂł͕ª‚©‚ç‚ñ‚¾‚낤‚ÈB
ƒSƒ~ƒTƒCƒg‚Ìé“`‚·‚ñ‚ȃJƒX
webworker‚Á‚Äjoin‚Ý‚½‚¢‚ȃƒ\ƒbƒh‚ ‚éH
>>740
Promise.all‚Æ‚©Promise.any‚ª‚ ‚邺B u‹alŠÔv‚ÅNG‚Ô‚Á‚±‚Þ‚¾‚¯‚¾‚낤‚Éc
Promise.any‚ÆWorker‚ðŽg‚Á‚½—Ⴊ
>>736
‚É‚ ‚éB‚²ŽQl‚ÉB Å‹ß‚ÌCPU‚Á‚ăRƒA”ƒoƒ‰ƒoƒ‰‚Å‚©‚”ñ‘Î̂ȃRƒAÚ‚Á‚Ä‚é‚©‚çA6ŒÂ‚‚ç‚¢Worker—§‚¿ã‚°‚Ä•½“™‚Ɉ—“Š‚°‚é‚ñ‚¶‚á‚È‚‚ÄA20ŒÂ‚‚ç‚¢‚ÌWorker—§‚¿ã‚°‚Ä”ñ‘ÎÌ‚Å‚¢‚¢‚©‚ç“K“–‚Ɉ—“Š‚°‚Ä‚ ‚Æ‚ÍOS‚É—Ç‚«‚ÉŒv‚ç‚Á‚Ä‚à‚炤‚Æ‚©‚Ì•û‚ªƒxƒ^[‚È‚Ì‚©‚ÈH
navigator.hardwareConcurrency
‚ŃRƒA”Žæ‚ê‚邼
>>746
‚È‚é‚Ù‚ÇB‚»‚¤‚¢‚¤‚Ì‚ª‚ ‚é‚Ì‚©B
‚¶‚á‚ ‚ ‚Æ‚Í”ñ‘Î̃RƒA‚ւ̑Ήž‚ɂȂ邯‚ÇA‚±‚ê‚Íׂ©‚ƒXƒ‰ƒCƒX‚µ‚Ä’€ŽŸ“Š“ü‚Å—Ç‚¢‚© >>745
‚»‚¤‚Å‚·
‘fl‚ªl‚¦‚锼’[‚ȃXƒPƒWƒ…[ƒŠƒ“ƒO‚̓Aƒ“ƒ`ƒpƒ^[ƒ“‚Å‚· >>747
‚¨‘O‚ÉŒü‚¯‚Ä‘‚¢‚½‚ñ‚¶‚á‚È‚¢B
‹–‰Â–³‚ƒŒƒX‚·‚é‚È•³ƒRƒe >>750
‚í‚©‚è‚Ü‚µ‚½A‚²Žål—l export interface TypeA {
paramters: {
[k: string]: {
// body
}
};
}
‚±‚ñ‚ÈŒ^‚ª‚ ‚é‚Æ‚«Aã‹Lbody‚Ì•”•ª‚ÌŒ^‚ðŽæ‚èo‚·‚±‚Æ‚Á‚Ä‚Å‚«‚Ü‚·‚©‚ËH
const f = (k: string, o: ???): TypeA => {
return { parameters: { [k]: o } };
};
‚±‚ñ‚È‚±‚Æ‚ª‚µ‚½‚¢B
ƒˆ[‚í‚©‚ç‚ñ‚ª‚±‚¤‚©‚Ë
bit‚Ç‚Á‚Æly
/3aJV7Hw
ts playground ‚¾‚ª’ZkURL NGƒ[ƒh‚É‚È‚Á‚Ä‚é‚©‚ç‚·‚Ü‚ñ‚È
‚»‚±‚Ì type Hage ‚Ì’è‹`‚É "extreme" ‚ð‘‚©‚¸‚ÉÏ‚Ü‚¹‚½‚¢B
‚±‚̗Ⴞ‚Æ {extreme:string} ‚Æ‚¢‚¤Œ^‚É‚È‚é•”•ª‚ª•ÏX‚³‚ꂽ‚Æ‚µ‚Ä‚à
type Hage ‚Ì‹Lq‚ð•Ï‚¦‚¸‚Éςނ悤 TypeA ‚Ì’è‹`‚©‚çŽæ‚èo‚·
•û–@‚ª‚È‚¢‚©‚ÆB
‚ ‚肪‚Æ‚¤A‚í‚©‚Á‚½B
["extreme"] ‚ðí‚ê‚ΖړI‚ÌŒ^‚É‚È‚è‚Ü‚·‚ËB
["paramters"] ‚ðŽg‚¦‚΂¢‚¢‚±‚Æ‚É‹C•t‚©‚È‚©‚Á‚½B
@@@@@@@@@@|
@@@@@@@@@@@| @@‚Ü‚½”¯‚̘b‚µ‚Ä‚é
@@@@@@@@@ @ |@@œc܃~
@@@@@@@@@@@_ (L¥ƒÖ¥,œc܃~
@@@@@@@@@@@@@(|@@@|(L¥ƒÖ¥`)::::@Š´‚¶ˆ«‚¢‚æ‚Ë
@@@@@@@@@@@@ @(Y@/:(|@@@|)::::::
@@@@@@@@@@@@@@ ‚µ _:(Y@/::
@@@@@@@@@@@@@@@@@ _‚µL
‚à‚¤ˆê‚‹³‚¦‚Ä‚‚¾‚³‚¢B
typeTypeB =
{
tag: 'a';
/* a ‚̃{ƒfƒB */
} | {
tag: 'b';
/* b ‚̃{ƒfƒB */
};
‚±‚ñ‚È Tagged union type ‚ª‚ ‚é‚Æ‚«A tag === 'a' ‚ÌŽž‚ÌŒ^(‰º‹L)‚ð
Žæ‚èo‚·‚±‚Æ‚Í‚Å‚«‚é‚Å‚µ‚傤‚©B
type x = {
tag: 'a';
/* a ‚̃{ƒfƒB */
}
TypeB & { tag: 'a' } ‚Å‚¢‚¯‚½B‚ ‚肪‚Æ‚¤B
Œ^‚É—~î‚·‚é•Ï‘Ô‚³‚ñ‚Í piotrwitek/utility-types ‚Å‚à npm ˆ¤‚·‚é‚Æ‚¢‚¢‚¼
‚Ü‚½‚Ü‚½‹³‚¦‚Ä‚‚¾‚³‚¢B
type X = A | B | C | undefined;
‚±‚Ì X ‚©‚ç undefined ‚𜂢‚½Œ^ (A | B | C) ‚ð‹‚ß‚é‚É‚Í‚Ç‚¤‚µ‚½‚ç‚¢‚¢‚Å‚µ‚傤‚©B
‰½‚ÉŽg‚¤‚ñ‚¶‚ác
˜R‚ê‚ÌŒÀ‚ç‚ꂽŒoŒ±‚Å‚ÍA
@x: (A | B | C | undefined)
‚ª“n‚Á‚Ä‚«‚½‚çA
@if (x is A) { ... }
@else if (x is B) { ... }
@else if (x is C) { ... }
@else if (x == undefined) { ... }
@else {
@@(ƒGƒ‰[)
@}
‚®‚ç‚¢‚µ‚©‚â‚邱‚Æ‚ª–³‚¢·Ó½
‚µŠÈ—ª‰»‚·‚邯‚Ç
type A = { [k: string]: number };
type B = { [k: string]: string };
type C = { [k: string]: boolean };
‚±‚±‚Å type X[string] ‚Å number | string | boolean ‚ðŽæ‚èo‚µ‚½‚©‚Á‚½‚¯‚Ç
undefined ‚ª¬‚¶‚Á‚Ä‚¢‚é‚Æ‚¤‚Ü‚‚¢‚©‚È‚©‚Á‚½B
typescript‚Ìd.tsƒtƒ@ƒCƒ‹‚ɂ‚¢‚Ä–Ô—…“I‚ɉðà‚³‚ê‚Ä‚¢‚éƒhƒLƒ…ƒƒ“ƒg‚Í‚ ‚è‚Ü‚·‚Å‚µ‚傤‚©
ŒöŽ®‚ÍÅ’áŒÀ‚ÌŽ–‚µ‚©‘‚©‚ê‚Ä‚¢‚È‚‚ÄB
—Ⴆ‚ÎAtest1.d.ts‚͈ȉº‚Ì’Ê‚è‚É‘‚¢‚Ä‚ ‚Á‚Ä
export type A1 = boolean;
type A2 = boolean;
test2.d.ts‚͈ȉº‚Ì’Ê‚è‚É‘‚¢‚Ä‚ ‚éê‡A
type B1 = boolean;
type B2 = boolean;
A2 B2‚Í‚Ç‚Á‚¿‚àutype XX = boolean;v‚Æ‚¢‚¤‘‚«•û‚ð‚µ‚Ä‚¢‚é‚Ì‚ÉA•Ê‚Ìtsƒtƒ@ƒCƒ‹‚Å
const x1 : A2 = true; ‚Æ‘‚‚ÆACannot find name A2 ‚ƃGƒ‰[‚É‚È‚é(import‚·‚é•K—v‚ª‚ ‚é)‚ª
const x2 : B2 = true; ‚Æ‘‚‚ÆAimport–³‚µ‚Å‚àƒGƒ‰[‚Ío‚È‚¢B
test1.d.ts ‚Íexport•¶‚ª‚ ‚é‚©‚çu‚±‚̃tƒ@ƒCƒ‹“à‚Ì’è‹`‚ÍAimport‚ð‚µ‚È‚¢‚ÆŽg‚¦‚È‚¢v‚Æ‚¢‚¤‚悤‚ȃ‚[ƒh‚É‚È‚Á‚Ä‚¢‚é‚Ì‚©‚È‚ÆŽv‚¤‚¯‚ÇA‚±‚Ì‚ ‚½‚è‚Ì‹““®‚ɂ‚¢‚Ä’m‚肽‚¢B
declare module•¶‚ðŽg‚Á‚½ê‡‚Æ‚©Anamespace‚â‚ç‚ŃlƒXƒg‚³‚ꂽꇂǂ¤‚È‚é‚Ì‚©‚Æ‚©A/// <reference types="xxx" /> ‚Æ‘‚©‚ê‚Ä‚¢‚é‚Æ‚Ç‚¤‚¢‚¤ˆµ‚¢‚É‚È‚é‚Ì‚© ‚Æ‚©
‚Æ‚É‚©‚d.tsƒtƒ@ƒCƒ‹‚̈ê”Ôׂ©‚¢Žd—l‚ªŒ©‚½‚¢B
ƒtƒƒ“ƒgƒGƒ“ƒhŒn‚̉ðà“®‰æã‚°‚Ä‚é ‰pŒê˜bŽÒ‚Ì Youtuber
ƒCƒPƒƒ“—¦‚‚·‚¬‚¶‚á‚ËH
ƒCƒPƒƒ“‚¶‚á‚È‚‚Ä‚àA
ƒŠ[ƒiƒX‚âRMS‚âƒo[ƒi[ƒYƒŠ[‚Ý‚½‚¢‚ÈA‚ЂƖڂ݂½‚¾‚¯‚Åu•Ïl‚¾‚ív‚Á‚ÄŽv‚¤l‚ª‚È‚¢
‚Ç‚¤‚È‚Á‚Ä‚ñ‚Ì‚æ
‚¨‘O‚ç‚àƒCƒPƒƒ“‚È‚ÌH
‚¿‚Ȃ݂ɂ킵‚ÍŽ©Ì•ŸŽR‰ëŽ¡‚̃CƒPƒƒ“‚¾
‰´‚à‚æ‚•à‚¢‚Ä‚é‚ÆŽO‰Yt”n‚³‚ñ‚â‚Á‚ς趂«‚Ä‚½‚ñ‚Å‚·‚Ë‚Á‚Ęb‚µŠ|‚¯‚ç‚ê‚Ä¢‚é‚í
ƒIƒŒ‚à‚µ‚å‚Á‚¿‚イw“ñ˜Y‚³‚ñ‚ÁccIx‚Á‚ĺ‚ðŠ|‚¯‚ç‚ê‚é‚©‚çAu‚¨‚â‚ÁAƒIƒŒ‚Í“c‹{“ñ˜Y‚̶‚Ü‚ê‘ã‚í‚è‚È‚Ì‚©‚ÈccHv‚Á‚ÄŽv‚Á‚Ä‚½‚çAâã“ñ˜Y‚³‚ñ‚̶‚Ü‚ê‘ã‚í‚肾‚Á‚½‚í
‰Á—îL‚Æ‚©‚¢‚¤ƒŒƒxƒ‹‚Å‚È‚¡‚Ì30‘ã‚®‚ç‚¢‚È‚ç‚à‚¤‰½‚̘b‚µ‚Ä‚é‚©‚à‚í‚©‚ç‚ñ‚¾‚낤‚È
TypeScript ‚ÅAReact ‚â‚Á‚½‚¯‚ÇA‚¢‚¿‚¢‚¿‚¢‚¿‚¢‚¿Œ^’è‹`‚ß‚ñ‚Ç‚·‚¬‚Èc
‘Š«‚‚»‚í‚é‚È‚ß‚‚¶‚©‚æ
ƒrƒWƒlƒXƒ‚ƒfƒ‹‚̃IƒuƒWƒFƒNƒg‚Æ‚©‚ÍŒ^’è‹`‚µ‚½‚¢‚ªA
‚¢‚¿‚¢‚¿ props ‚̃Cƒ“ƒ^[ƒtƒF[ƒX‚Æ‚©‘‚¢‚Ä‚ç‚ñ‚Ë[
•ÏX‚ª‚ ‚Á‚½‚ç‚¢‚¿‚¢‚¿ƒCƒ“ƒ^[ƒtƒF[ƒX‚à‘‚«Š·‚¦‚È‚«‚á‚¢‚¯‚È‚¢‚µ
‚Ý‚ñ‚È‚Ç‚¤‚â‚Á‚ÄŽg‚Á‚Ä‚é‚ÌH
Angular ‚Æ‚©‘¼‚̃tƒŒ[ƒ€ƒ[ƒN‚¾‚Æ TypeScript ‚Å‚Ì‚â‚è‚â‚·‚³ˆá‚¤H
>>774
tsŽg‚¢‚±‚È‚¹‚Ä‚È‚¢‚Ì‚©H
–Ê“|‚È‚çany‚É‚µ‚Æ‚¯B >>774
>>Angular ‚Æ‚©‘¼‚̃tƒŒ[ƒ€ƒ[ƒN‚¾‚Æ >>TypeScript ‚Å‚Ì‚â‚è‚â‚·‚³ˆá‚¤H
‚â‚Á‚Ïts—‰ð‚µ‚Ä‚µ‚È‚¢‚ËB > •ÏX‚ª‚ ‚Á‚½‚ç‚¢‚¿‚¢‚¿ƒCƒ“ƒ^[ƒtƒF[ƒX‚à‘‚«Š·‚¦‚È‚«‚á‚¢‚¯‚È‚¢‚µ
‚¨‚Ü‚¦‚³‚ñ‚̂悤‚È‚¤‚Á‚©‚èƒKƒCƒW‚Å‚à•ÏX–Y‚ꂪ‚È‚¢‚悤Žw“E‚µ‚Ä‚‚ê‚Ä‚é‚Æ‚¢‚¤‚Ì‚É
‚킪‚Ü‚Ü‚¤‚Á‚©‚èƒKƒCƒW‚Ƀ‰ƒ“ƒNƒAƒbƒv‚â
ƒŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO‚µ‚È‚¢l‚à‚¢‚é‚©‚ç‚ËB
i‚¢‚Ü‚à‚Ý‚¶‚©‚É‚É‚¢‚邵A
‹‘”Û‚é‚©‚à...‚»‚Ìlj
VSCode ‚̕⊮‚ÅŠÖ”ƒVƒOƒjƒ`ƒƒŠm”F‚·‚鎞AƒJƒIƒX‚·‚¬‚È‚¢H
ƒ‰ƒCƒuƒ‰ƒŠ‚ªƒ†ƒjƒIƒ“‚â‚çŽg‚¢‚Ü‚‚Á‚Ä‚é‚Ì‘½‚‚ÄAƒpƒbƒgŒ©ˆø”‚ª‰½ŒÂ‚ ‚é‚Ì‚©‚í‚©‚è‚É‚‚¢‚µA
‚à‚¤‚µŒ©‚â‚·‚¢ƒ|ƒbƒvƒAƒAƒbƒv•\Ž¦‚É‚È‚ç‚ñ‚Ì‚©‚È
>>779
c#ˆÈゾ‚ËB
‰üs‚ÅŒ©‚â‚·‚‚È‚è‚»[[‚È‚à‚ñ‚¾‚¯‚ÇB ‰½”{‚àI
Œ^‚Ì‹@”\‚à—y‚©‚É‚“x‚¾I
JavaScript‚Æ‚¢‚¤‚»‚Ñ•³‚ð‚Ü‚Æ‚à‚É‚·‚邽‚ß‚¾
‚µ‚á[‚È‚¢
Œ^‚𔼂Ζ³—–î—•t‚¯‚Ă邾‚¯‚ÅAÅI“I‚É‚ÍŒ^‚ð휂µ‚½JavaScript‚É‚È‚é
—v‚·‚é‚É“®“IŒ^Œ¾Œê‚Æ‚¢‚¤‚Ì‚ÍA‚»‚ꂾ‚¯–L•x‚È•\Œ»—Í‚ð”é‚ß‚Ä‚é‚ÆŒ¾‚¤‚±‚Æ‚¾
–{—ˆ‚Í‚»‚ê‚ƈø‚«Š·‚¦‚ÉŽÀs‘¬“x‚ª‹]µ‚É‚È‚é‚à‚ñ‚¾‚ªAVM‚̃`ƒ…[ƒjƒ“ƒO‚É‚æ‚èƒlƒCƒeƒBƒuƒR[ƒh‚Æ‘»F–³‚¢‚Ì‚ª¦‚¢‚Æ‚±‚ë
>>780
‚»‚¤‚æ‚È
Š„‚Ɖüs‚·‚邾‚¯‚Å‚à‘S‘Rˆá‚¤‚ÆŽv‚¤‚ñ‚æ‚È
‚Å‚«‚ê‚ÎF‚à‚‚¢‚½‚ç‚»‚è‚ጩ‚â‚·‚¢‚¯‚Ç
‚È‚ñ‚© Extension ‚È‚¢‚ñ‚©‚Ë >>786
‰Â•Ï’·Œ^‚à‚¤“ü‚Á‚Ä‚È‚©‚Á‚½‚Á‚¯‚ÆŽv‚Á‚½‚ç3”N‘O‚Ì‹LŽ–‚© ƒT[ƒhƒp[ƒeƒBƒ‰ƒCƒuƒ‰ƒŠ‚ÌŒ^’è‹`‚ÉŠÖ‚µ‚Ä‚ÍA
’è‹`‘‚‚Ì‚ß‚ñ‚Ç‚‚³‚»‚¤‚È‚Æ‚«‚Í any ‚Å’Ê‚µ‚Ä‚é
Œ^’è‹`‚ ‚Á‚½‚Ù‚¤‚ª•Ö—˜‚È‚Ì‚ÍŠm‚©‚È‚Ì‚ÅA
ì‹ÆŽ©“®‰»‚µ‚ÄŠy‚É‚µ‚Ä‚‚ê‚éƒc[ƒ‹o‚Ä‚‚é‚Æ‚ ‚肪‚½‚¢‚È‚ÆŽv‚Á‚Ä‚é
ƒCƒ“ƒeƒŠƒZƒ“ƒX‚Ìi‰»‚Æ‚©
‚ ‚ÆAVS Code ‚ÅATypeScript ‚ÌŒ^’è‹`“Ç‚Ý‚É‚‚·‚¬A
ƒhƒLƒ…ƒƒ“ƒg‘‚¢‚Ä‚ ‚邱‚Æ‚È‚·‚¬AJavaScript ‚̃R[ƒh‚É’¼Ú‚ƂׂË[‚·‚¬iHj
‚Å‚àA‚±‚¤‚¢‚¤ƒA[ƒLƒeƒNƒ`ƒƒ‚ÉŠÖ‚·‚é’ŠÛ“I‚È‹c˜_‚Á‚Ä
ŒÂX‚̈Č‚É—Ž‚Æ‚µž‚Ü‚È‚¢‚Æ–{Ž¿Œ©‚¦‚Ä‚±‚È‚¢‚±‚Æ‚Æ‚Æ‚©A
‚»‚à‚»‚à‘z’è‚·‚é󋵂ª‹c˜_‚·‚é‘ŠŽè‚ÆH‚¢ˆá‚Á‚Ă邱‚Æ‚ª‚ ‚é‚©‚ç
GitHub ‚É‚ ‚é‹ï‘Ì—á‚Å‚à–¾Ž¦‚µ‚Ä‚‚ê‚é‚Æ‹c˜_‚Í’»‚é‚ñ‚¶‚á‚È‚¢‚©‚È‚ÆŽv‚¤
•¾ŽÐ‚ÍáŠQŽÒŒÙ—p˜g‚µ‚©‚¢‚È‚¢‚Ì‚ÅPHP‚µ‚©‘‚¯‚Ü‚¹‚ñ•À‚Ì‘Ê•¶‘‚¢‚Ä‚é“z‚Á‚Ä
¶‚«‚Ä‚Ä’p‚¸‚©‚µ‚‚È‚¢‚Ì‚©‚È‚Á‚ÄŽv‚Á‚¿‚ႤA‚²‚ß‚ñ‚Ë
>>790
‚±‚Ìl—L–¼l‚È‚ÌH
ŒÂlƒuƒƒO‚ɑ΂·‚锽‰ž‚Æ‚µ‚Ä‚Í—Ê‚ª‘½‚‚Ä‹Á‚
ƒAƒ“ƒT[‚Ì‚Ù‚¤‚Í”ð‚¯‚ç‚ê‚È‚¢•¡ŽG«‚ð
h•¡ŽG‚ÈŒ^h‚Å•\Œ»‚µ‚½ê‡‚Æ‚µ‚È‚¢ê‡‚̃gƒŒ[ƒhƒIƒt‚ɂ‚¢‚Ä‚Í
gÁ‚¦‚Ä‚µ‚Ü‚¤‚±‚Æ‚Í–³‚¢h‚Å‘÷‚µ‚Ă邾‚¯‚ų–Ê‚©‚ç‰ñ“š‚µ‚Ä‚È‚¢‚æ‚Ë
ʼn‚̃uƒƒO‚Ìl‚àŠ´Šo“I‚Șb‚¾‚©‚ç‚Ç‚Á‚±‚¢‚Ç‚Á‚±‚¢‚¾‚¯‚Ç
«‚±‚¤‚¢‚¤‚Ì‚ÍŠæ’£‚è‚·‚¬‚¶‚á‚Ë‚Á‚ÄŠ´‚¶‚é
type ArrayOfLengthRec<Num, Elm, T extends unknown[]> = T["length"] extends Num ? T : ArrayOfLengthRec<Num, Elm, [Elm, ...T]> ‚Ü‚Ÿ‚Å‚àŒ^’è‹`‚·‚é‚ÌŠy‚µ‚¢‚©‚ç‚Ë
ƒpƒYƒ‹‚Ý‚½‚¢‚Å
–²’†‚É‚È‚Á‚¿‚Ⴄ‚Ì‚Í•ª‚©‚é
>>794
‚Ü‚¶‚©‚æ‚—
‚ß‚ñ‚Ç‚‚¹[‚¾‚¯‚È‚ñ‚¾‚ªc ‰SŽÒ‚Ì‚¤‚¿‚Íl‚¦‚È‚‚Ä—Ç‚¢‚ñ‚¾‚æB
‚킯‰ð‚ç‚È‚‚Ä‚àƒR[ƒh•âŠ®‚µ‚Ä‚‚ê‚éˆÊ
Žv‚Á‚Ä‚ê‚Ηǂ¢B
ƒR[ƒh•âŠ®—ÍEƒGƒ‰[”Œ©—Í‚ð‚‚߂邽‚ß‚ÉŒ^‘‚¢‚Ă銴‚Í‚ ‚é
Java‚Æ‚©Go‚ÌŒ^‚ðh‘‚©‚˂΂Ȃç‚È‚¢h‚Æ‚¢‚¤‹§Š´‚ª‚È‚¢‚ñ‚¾‚æ‚È
ƒR[ƒh•âŠ®‚Í‚·‚²‚¢ƒƒŠƒbƒg‚¾‚æ‚Ë
‚ ‚ÆŒ^’è‹`’Ê‚Á‚Ä‚é‚Æ‘‚¢‚ĂĈÀS‚·‚邵
ƒƒŠƒbƒg‚̈ê”Ô‰º‚Í
ƒŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO‘Ï«‚Å‚µ‚åB
ƒƒŠƒbƒg‚̈ê”Ô‚Í
ƒŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO‘Ï«‚Å‚µ‚åB
ƒNƒ‰ƒX‚Ì’†‚ÅA–ˆ‰ñ this. ‚Á‚Ä‚Ì‘‚©‚È‚«‚á‚¢‚¯‚È‚¢‚Ì–Ê“|‚‚³‚‚È‚¢cH
–Y‚ê‚邵
Java •ÀŠ´
javascript‚Ìthis‚Ì‚â‚₱‚µ‚³’m‚Á‚Ä‚ÄŒ¾‚Á‚Ä‚éH
>>802
JSŽg‚¢‚Í’N‚à‚»‚¤Žv‚í‚È‚¢‚ÆŽv‚¤‚æ
‚»‚±‚Å‚àʼn‚©‚ç”ے肳‚ê‚Ă邵A‚»‚̒ʂ肾‚æ
this‚ðÈ—ª‰Â”\‚È‚Ì‚ÍŠeƒƒ\ƒbƒh‚ɃNƒ[ƒWƒƒ‚ª‚È‚¢Œ¾Œê‚¾‚¯‚¾‚æ
JS‚Í‚»‚¤‚Å‚Í‚È‚¢‚©‚çA—]Œv‚É•ª‚©‚è‚É‚‚‚Ȃ邾‚¯ thisÈ—ª‚ª—~‚µ‚¢‚È‚ñ‚Ä1“x‚àŽv‚Á‚½‚±‚Æ‚È‚¢‚í
ƒŒƒKƒV[‚ÈJavaƒvƒƒWƒFƒNƒg‚ÅAƒNƒ\ƒfƒJclass‘ŠŽè‚É‚µ‚½Žž‚Í eclipse ‚Å this ‹§‚¹‚ñ‚Æ‚â‚Á‚Ä‚ç‚ê‚ñ‚©‚Á‚½
‚ÅAJava‚È‚çƒ[ƒJƒ‹•Ï”‚ƃNƒ‰ƒX•Ï”‚̈Ⴂ‚ªŒ©•ª‚¯‚ç‚ê‚È‚¢‚¾‚¯‚¾‚ª
JavaScript‚Í‚½‚¾‚Ìfunction‚à‚ ‚é
ƒAƒz‚ªJavaScript‚Åthis‚ÌÈ—ªˆ«—p‚µ‚½‚çAŠÈ’P‚É’n–‚ÌŠW‚ªŠJ‚¢‚Ä’†‚©‚ç”ò‚Ño‚½ƒCƒGƒXƒtƒ@ƒbƒLƒ“ƒLƒŠƒXƒg‚É”]‚܂Ńtƒ@ƒbƒN‚³‚ê‚é–¢—ˆ‚ªŒ©‚¦‚é‚Ë
‚‚©‚µ‚΂ç‚class‚àthis‚à‘‚¢‚½‹L‰¯‚Ë‚¦‚í
POJO‚ÆŽQÆ“§‰ß‚Èarrow function‚ª‚ ‚ê‚΂»‚ê‚Å‚¢‚¢
ts‚â‚Á‚Ä‚é‚Æclass‚¢‚ç‚È‚¢‚æ‚Ë
ŒÂl“I‚ɂ̓IƒuƒWƒFƒNƒg‚ª•›ì—p‚ðŽ‚Âi‚Æ–¾Ž¦‚µ‚½‚¢j‚Æ‚«‚ÍŽg‚¤‚©‚ÈB
‚ ‚ÆError‚ðŒp³‚Æ‚©Œp³ˆÈŠO‚ɃXƒ}[ƒg‚È•û–@‚ª–³‚¢‚Æ‚«‚àŽg‚¤B
o”Ô‚Í‚»‚ñ‚È‚É‘½‚‚È‚¢‚¯‚Ç‚à
[TypeScript ‚̃eƒXƒg‚ð Jest (ts-jest) ‚Å‚â‚Á‚Ä‚Ý‚é - Qiita](https://qiita.com/mangano-ito/items/99dedf88d972e7e631b7)
‚±‚êŽQl‚Éjest‚ŃeƒXƒg‚µ‚½‚Ì‚Å‚·‚ªAts-jestŽg‚¤‚ÆAƒeƒXƒgŽž‚Éts-jest‚ª“à•”“I‚Ƀgƒ‰ƒ“ƒXƒpƒCƒ‹‚·‚’‚Ì‚ÅAJavaScriptƒR[ƒh‚ªƒtƒ@ƒCƒ‹‚Æ‚µ‚Ķ¬•Û‘¶‚³‚ê‚È‚¢‚©‚ç
ƒeƒXƒg‚·‚邽‚Ñ‚ÉA‘O‚̃eƒXƒg‚©‚ç•ÏX‚³‚ê‚Ä‚È‚¢ƒ\[ƒX‚à‚¢‚¿‚¢‚¿‘S‚ăgƒ‰ƒ“ƒXƒpƒCƒ‹‚µ‚Ä‚é‚Ì‚Å‚·‚©H
‚»‚ê‚Æ‚àjsƒtƒ@ƒCƒ‹‚ª¶¬‚³‚ê‚Ä‚ê‚ÎA‚»‚ê‚ð—˜—p‚µ‚Ä‚‚ê‚é‚Ì‚Å‚·‚©H >>811
‚ ‚肪‚Æ‚¤I
‚»‚Ì}‚Ý‚Ä‚àŽ©•ª‚¶‚á“‚‚Ä‚æ‚‚í‚©‚ç‚ñ‚ªAŠm‚©‚ɃLƒƒƒbƒVƒ…Žg‚Á‚Ä‚é‚Ý‚½‚¢‚¾‚ËB
Žv‚Á‚½‚æ‚è•¡ŽG‚É‚¢‚ë‚¢‚낵‚Ä‚é‚Ý‚½‚¢‚¾‚©‚çA‚â‚Á‚ς莩•ª‚ªS”z‚·‚é‚悤‚ÈŽ–‚Íl—¶Ï‚Ý‚¾‚ËA“–‚½‚è‘O‚©B Flutter2 ‚Æ‚Æ‚à‚É Dart ‚ÉnullˆÀ‘S‚ª‚â‚Á‚Ä—ˆ‚½‚È‚
‚¿‚å‚Á‚ƕ׋‚µ‚Ă݂悤‚©‚È
Dart‚Ì‚±‚ƃSƒ~‚¾‚ÆŽv‚Á‚Ă邯‚Ç
ãÞ‚¦—§‚ƒNƒ\of^‚̃Sƒ~ofƒSƒ~storyboard & xcode‚ð‚â‚é‚‚ç‚¢‚È‚çADart‚ÅŽñ’Ý‚Á‚½•û‚ªƒ}ƒV‚È‚Ì‚©‚à‚µ‚ê‚ñ
TypeScript•×‹‚µ‚Ä‚½‚çƒIƒuƒWƒFƒNƒg‚Ì”z—ñ‚Æ‚©o‚Ä‚«‚ÄŒ^‚ÌŽg‚¢•û‚ª‘S‚‚í‚©‚ç‚È‚©‚Á‚½B
type user2 = {
id: number;
name: string;
}[];
let test2: user2 = { id: 1, name: "‘å’J" };
console.log(test2);
---
type user2‚̃IƒuƒWƒFƒNƒg‚ðƒIƒuƒWƒFƒNƒg‚Ì”z—ñ‚É‚µ‚½‚¯‚ÇA‚±‚ê‚ð—˜—p‚·‚é‚Ì‚Í‚Ç‚¤‚·‚ê‚΂¢‚¢‚ÌH
eslint‚Ìno-unsafe-member-accessƒ`ƒFƒbƒN‚ð—LŒø‚É‚·‚邽‚߂ɉö‚µ‚¢any‚Í‘S•”ƒ^ƒCƒvƒK[ƒh‚ð’Ê‚µ‚Ä
Žg‚¤‚悤‚É‚µ‚悤‚ÆŽv‚Á‚½‚ñ‚¾‚ªAƒ^ƒCƒvƒK[ƒh‚Ì’†‚Ńƒ“ƒo[ƒ`ƒFƒbƒN‚·‚é‚Æ‚±‚낪no-unsafe-member-access‚É
ˆø‚Á‚©‚©‚Á‚Ä‚µ‚Ü‚¤B
‹l‚ñ‚Å‚éH
interface TypeA {
member_a: string;
}
functin isTypeA(a: any): a is TypeA {
if (typeof a !== 'object') return false;
if (!('member_a' in a)) return false;
if (typeof a.member_a !== 'string) return false; // Unsafe member access .member_a on an any value.
return true;
}
#private‚ÍŽg‚Á‚Ä‚¢‚‚ׂ«‚È‚ÌH
uŒ^‚ª‚È‚¢‚ÆŠJ”‚Å‚«‚È‚¢v
uŒ^‚ª‚È‚¢‚ÆŠJ”‚Å‚«‚È‚¢‚Á‚Ä‚¢‚¤‚Ì‚Í–³”\v
«–|–ó
u‚¤‚ñ‚±‚Á‚ĉ˜‚¢v
u‚¤‚ñ‚±‚͉˜‚¢‚ÆŽv‚Á‚Ä‚é‚â‚‚͖³”\v
«–|–ó
uƒo[ƒJv
uƒA[ƒzv
>>821
‚È‚é‚ׂweb•W€‚ÉŠñ‚¹‚½‚Ù‚¤‚ª—Ç‚¢‚ÆŽv‚Á‚Ä‚é‚Ì‚ÅA‰´‚ÍŽg‚Á‚Ä‚éB
ƒRƒ“ƒXƒgƒ‰ƒNƒ^ˆø”‚ŃuƒƒpƒeƒB‰Šú‰»‚̃Vƒ“ƒ^ƒbƒNƒXƒVƒ…ƒK[‚ª–³‚¢‚Ì‚¾‚¯‚ª•s–ž Go‚Æ‚©Rust‚Ý‚½‚¢‚Éenum‚Æ‚©type‚É’¼Úƒƒ\ƒbƒh¶‚₵‚½‚¢...
>type‚É’¼Úƒƒ\ƒbƒh¶‚₵‚½‚¢.
‚¢‚Ü‚¢‚¿‚Ç‚¤‚¢‚¤‚±‚Æ‚ð‚â‚肽‚¢‚Ì‚©‚í‚©‚ç‚È‚¢‚ªAclass‚¶‚á‚È‚‚Ätype‚¶‚á‚È‚¢‚ƃ_ƒ‚È‚ÌH
type‚ÉŠÖ”Œ^‚̃ƒ“ƒo‚ð’ljÁ‚·‚è‚á‚¢‚¢˜b‚¶‚á‚È‚‚ÄH
utype‚É’¼Úv‚Á‚Ä‚Ì‚ª‰½‚ðŒ¾‚Á‚Ä‚¢‚é‚Ì‚©‚æ‚‚í‚‘‚©‚ç‚ñB
Go‚âRust‚ðG‚Á‚½‚±‚Æ‚ª‚ ‚ê‚Εª‚©‚邯‚Ç, ƒNƒ‰ƒX‚Å‚Í‚È‚‚ ‚‚܂Ńf[ƒ^\‘¢(struct)‚ð’è‹`‚µ‚Ä, Go‚ł̓ŒƒV[ƒo•t‚«‚ÌŠÖ”, Rust‚Å‚Íimpl‚Ńf[ƒ^\‘¢‚ɑ΂µ‚Ä‘€ì‚ð’è‹`‚µ‚Ä‚¢‚
C#‚¾‚Æ’è‹`ς݂̃Nƒ‰ƒX‚ÉŠg’£ƒƒ\ƒbƒh‚Ńƒ\ƒbƒh’ljÁ‚µ‚½‚è
‘f‚ÌJavaScript‚È‚çprototype‚Ƀƒ\ƒbƒh’ljÁ‚·‚é, ‚Ý‚½‚¢‚È
‚Å, TypeScript‚¾‚Æ¡‚Ío—ˆ‚È‚¢‚ÆŽv‚¤‚¯‚Ç, Žù—v‚Í‚ ‚è‚»‚¤‚¾‚µ, RFC‚Æ‚©o‚³‚ê‚Ä‚È‚¢H
\•¶“I‚ÉJavaScript‚ƌ݊·‚É‚â‚é‚Ì‚ª“‚¢‚©‚ÈH
Github‚Å‚Æ‚ ‚éƒvƒƒWƒFƒNƒg‚ðƒpƒuƒŠƒbƒN‚É‚µ‚Ä‚½‚牽‚©ƒ„ƒx[ƒAƒŒö‚É—‚܂ꂽ
‹C‚É“ü‚ç‚È‚«‚Ⴓ‚Á‚³‚ƃtƒH[ƒN‚µ‚ë‚âƒnƒQ
‚Ó‚¥‚¥c
Angular‚̃o[ƒWƒ‡ƒ“オ‚é‚Ì‘‚·‚¬‚¾‚æ‚£c
Angular4‚ðŽg‚Á‚½SPA‚̃ZƒLƒ…ƒŠƒeƒB‚ªS”z‚¾‚æ‚£c
Angular ‚Æ‚©‚Æ‚Á‚‚ÉŽ€‚ñ‚¾‚ÆŽv‚Á‚Ä‚½‚í
’N‚ªŽg‚Á‚Ä‚é‚ñ‚¾H
1Œn‚Åg“®‚«Žæ‚ê‚È‚‚È‚Á‚½ƒŒƒKƒV[ƒT[ƒrƒX‚‚ç‚¢‚µ‚©Œ©‚½‚±‚Æ‚È‚¢
>>833
Teamsi‚»‚ë‚»‚ëReact‚Å‘‚«Š·‚¦‚ç‚ê‚邯‚Çj Google Ž©g‚ª Google ‚̃T[ƒrƒX‚Å‘S‚Žg‚Á‚Ä‚È‚¢‚Ì‚ÉA‰½‚Åì‚Á‚Ä‚é‚Ì‚©‚í‚©‚ñ‚È‚¢
‚¢‚ÂŽÌ‚Ä‚ç‚ê‚Ä‚à‚¨‚©‚µ‚‚È‚‚Ë
teams‚Á‚Äangular‚¾‚Á‚½‚Ì‚©B
react‚É‚µ‚½‚ç‚à‚Á‚³‚肪’¼‚é‚©‚È
>>836
Electron+AngularJs‚©‚çWebview2+React‚É‚È‚Á‚ăƒ‚ƒŠÁ”ï‚Í”¼•ª‚É‚È‚é‚Æ‚© Ž¿–₳‚¹‚Ä‚‚¾‚³‚¢B
WebAPI‚ðŒÄ‚ñ‚ÅJson‚ðŽæ“¾‚µA‚»‚̈ꕔ‚Ì€–Ú‚ðŽg‚¢‚½‚¢‚Ì‚Å‚·‚ªA
ˆÈ‰º‚Ì‚Q‚‚̕û–@‚ðl‚¦‚Ü‚µ‚½B
‚PD’ñ‹Ÿ‚³‚ê‚éJson‚Æ‘S‚“¯‚¶€–Ú‚ð‚à‚ƒNƒ‰ƒX‚ð’è‹`‚µ‚ăp[ƒX
const data = axios.get<ƒNƒ‰ƒX[]>("•¡ŽG‚ÈJson‚ð•Ô‚·URL");
‚QDget‚ÌŒ‹‰Ê‚ð‚Æ‚è‚ ‚¦‚¸any‚Ŏ󂯎æ‚èA•K—v‚È•”•ª‚¾‚¯‚ðƒNƒ‰ƒX‚̃Rƒ“ƒXƒgƒ‰ƒNƒ^‚É“n‚·
axios
.get("("•¡ŽG‚ÈJson‚ð•Ô‚·URL")
.then((results) => {
const items = JSON.stringify(results.data);
const parseItems = JSON.parse(items);
const data = new ƒNƒ‰ƒX(parseItems.•K—v‚È€–Ú1,parseItems.•K—v‚È€–Ú2...)
ˆÈ‰º—ª
u‚Pv‚Ì•û–@‚ÍA•s—v‚È€–Ú‚àƒNƒ‰ƒX‚É’è‹`‚·‚é‚Ì‚Å‚¢‚ë‚¢‚ë–³‘Ê‚ª‘½‚¢‚ªAƒIƒuƒWƒFƒNƒg‚Ì쬂ªŠÈ’PB
u‚Qv‚Ì•û–@‚ÍAŒ^î•ñ‚ªŽg‚¦‚È‚‚Ä•s•ÖB‚¾‚È‚ÆŽv‚Á‚½‚Ì‚Å‚·‚ªA
ã‹L‚̂悤‚Èê‡A’Êí‚Í‚Ç‚¿‚ç‚Ì•û–@‚ðŽg‚¤‚à‚Ì‚Å‚µ‚傤‚©H
‚à‚µ‚‚Í‘S‘R•Ê‚È‚â‚è•û‚ª‚ ‚ê‚΋³‚¦‚Ä‚¢‚½‚¾‚«‚½‚¢‚Å‚·B
‚·‚Ý‚Ü‚¹‚ñ838‚Å‚·BŽ©ŒÈ‰ðŒˆ‚Å‚·B
‚Q‚Ì•û–@‚ÅA
const parseItems : ƒCƒ“ƒ^[ƒtƒF[ƒX = JSON.parse(items);
‚Ý‚½‚¢‚É‚·‚ê‚ÎA•K—v‚È‚Æ‚±‚¾‚¯–„‚߂邱‚Æ‚Å‚«‚Ü‚µ‚½B
Express ‚ð—p‚¢‚ÄwebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŠJ”‚µ‚Ä‚¢‚é‚à‚Ì‚Å‚·BŽ¿–â‚È‚Ì‚Å‚·‚ªAwebpack‚Å.ts‚̃Rƒ“ƒpƒCƒ‹‚ƃoƒ“ƒhƒ‹‚ðs‚¤Û‚Éo—ˆ‚½bundle.js‚ðdist ƒtƒHƒ‹ƒ_‚Éo—Í‚·‚é‚Æ‚µ‚ÄA.ejs ‚Ȃǂ̃eƒ“ƒvƒŒ[ƒg‚ª“ü‚Á‚½views‚Í‚Ç‚±‚É”z’u‚·‚é‚Ì‚ª³‚µ‚¢‚Ì‚Å‚µ‚傤Bsrc‚Å‚¢‚¢‚悤‚È‹C‚à‚·‚é‚Ì‚Å‚·‚ªAŽÀÛ‚É“®‚‚Ì‚Íbundle.js‚¾‚µAdist ‚Ì•û‚ª‚¢‚¢‚Ì‚©‚È‚Æcc.
‚悤‚â‚tsconfig‚Ìmodule‚ðesnext‚É‚µ‚½‚í
‚Þ‚µ‚ëesnext‚É‚µ‚Ä‚È‚¢l‚Á‚ĉ½‚ª——R‚È‚ÌH
TSŒ^ˆÀ‘S‚Í—Ç‚¢‚¯‚ǃnƒ}‚é‚ÆŽžŠÔƒƒX‚·‚é‚Ë
ƒGƒ‰[ƒpƒb‚ÆŒ©‚Å‚Í‚È‚ñ‚ŃGƒ‰[‚ªo‚Ä‚é‚©‚í‚©‚ç‚È‚¢
C++‚ð‚â‚Á‚Ä‚½ ‚ðŽv‚¢o‚µ‚½
TS‚Á‚ăvƒƒOƒ‰ƒ~ƒ“ƒO‚µ‚Ä‚é‚Á‚Ä‚¢‚¤‚æ‚è–â‘è‰ð‚¢‚Ă銴‚ª‹‚¢
ƒpƒYƒ‹‚Á‚Û‚‚Í‚ ‚邪BƒXƒŠƒU[ƒŠƒ“ƒN‚Ý‚½‚¢‚É’è΂ɓ–‚Ä‚Í‚ß‚½‚çƒpƒ^ƒpƒ^‚Æ‰ð‚¯‚Ä‚¢‚ˆóÛ‚¾‚ÈB
TypeScript‚̃WƒFƒlƒŠƒNƒX‚ÅŒ^Á‹Ž‚·‚é•û–@‚Á‚Ä–³‚¢‚ñ‚¾‚Á‚¯H
‚ ‚é‚¢‚ÍJava‚̃ƒCƒ‹ƒhƒJ[ƒhŒ^<?>‚Ý‚½‚¢‚È‚Ì‚Æ‚©B
‚ ‚ ‚È‚é‚Ù‚ÇA<T extends any>‚È‚ç<any>‚Å‚¢‚¢‚킯‚©B
Promise‚𓯊ú“I‚Éwait‚·‚邱‚Æ‚Á‚Ä‚Å‚«‚Ü‚·‚©H
await‚Å‚Í‚È‚C#‚ÌTask‚ÅŒ¾‚¤‚Æ‚±‚ë‚Ì.Result‚È‚ñ‚Å‚·‚ªc
‚¦A‚Å‚«‚È‚¢‚ñ‚Å‚·‚©¢‚Á‚½
ŠO•”ƒ‰ƒCƒuƒ‰ƒŠ‚É“n‚·ƒR[ƒ‹ƒoƒbƒNŠÖ”‚ªPromise‚ðƒTƒ|[ƒg‚µ‚Ä‚È‚¢
‚¯‚ÇA‚»‚Ì’†‚Å”ñ“¯ŠúŠÖ”‚ðŒÄ‚Ñ‚½‚¢
‚Æ‚¢‚¤ƒ†[ƒXƒP[ƒX‚È‚ñ‚Å‚·‚ª’ú‚߂邵‚©‚È‚¢‚ñ‚Å‚·‚©‚Ëc
C#‚͌ĂÑo‚µ‘¤‚̃XƒŒƒbƒh‚ðƒuƒƒbƒN‚µ‚Ä‚àTask‚͕ʃXƒŒƒbƒh‚Å“®‚¢‚Ä‚é‚©‚碂ç‚È‚¢
JavaScript‚̓Vƒ“ƒOƒ‹ƒXƒŒƒbƒh‚¾‚©‚瓯Šú“I‚Éwait‚Å‚«‚½‚ç
ŒÄ‚Ño‚µ‘¤‚ªƒuƒƒbƒN‚³‚ê‚邾‚¯‚¶‚á‚È‚Promise‚Å“®‚©‚»‚¤‚Æ‚µ‚Ă鈗‚àƒuƒƒbƒN‚³‚ê‚é‚Ì‚Å¢‚é
ƒR[ƒ‹ƒoƒbƒNŠÖ”‚ðPromise‰»‚·‚ê‚΂¢‚¢ƒP[ƒX‚̂悤‚È‹C‚ª‚·‚é
ƒR[ƒ‹ƒoƒbƒN‚Æ‚¢‚¤‚ƳŠm‚¶‚á‚È‚¢‚©‚à‚È‚ñ‚Å‚·‚¯‚Ç
‚ ‚éƒtƒŒ[ƒ€ƒ[ƒN‚ªŠg’£‚Ì‚½‚߂̃tƒbƒN‚ðƒTƒ|[ƒg‚µ‚Ä‚é
‚»‚ÌŠÖ”‚ÍŒˆ‚Ü‚Á‚½–¼‘O‚Ìjs‚ ‚é‚¢‚Ítsƒtƒ@ƒCƒ‹‚̃fƒtƒHƒ‹ƒgƒGƒNƒXƒ|[ƒg‚ÅŽw’è‚·‚é
ƒtƒŒ[ƒ€ƒ[ƒN‚Í‚»‚ꂪ‚ ‚ê‚Η˜—p‚µA‚È‚¯‚ê‚Ή½‚à‚µ‚È‚¢
‚»‚ÌŠÖ”‚̃VƒOƒlƒ`ƒƒ[‚Í”ñ“¯Šú‚ðƒTƒ|[ƒg‚µ‚Ä‚È‚¢
‚±‚ñ‚ÈŠ´‚¶‚̃Vƒ`ƒ…ƒG[ƒVƒ‡ƒ“‚Å‚·‚Ë
>>854
>‚»‚ÌŠÖ”‚̃VƒOƒlƒ`ƒƒ[‚Í”ñ“¯Šú‚ðƒTƒ|[ƒg‚µ‚Ä‚È‚¢
async/await‚Ì‚±‚ÆŒ¾‚Á‚Ä‚éH
‚à‚µ‚»‚¤‚È‚çasync/awaitŽg‚í‚È‚¢‹Œ—ˆ‚ÌPromise‚Ì‚â‚è•û‚·‚ê‚ÎH >>855
Promise‚àƒTƒ|[ƒg‚³‚ê‚Ä‚È‚¢‚Å‚·
function libFunc( myFunc: (x: X) => Y )
ƒCƒ[ƒW‚Æ‚µ‚Ä‚Í‚±‚ñ‚ÈŠ´‚¶‚Å
myFunc‚ÍPromise‚ð•Ô‚¹‚È‚¢‚悤‚È‚Á‚Ä‚Ü‚·
myFunc‚Ì‚È‚©‚ÅOneWay‚ÌPromise‚𑖂点‚ÄPromise‚ðŽÌ‚Ă邱‚Æ‚Í‚Å‚«‚Ü‚·‚ª
libFunc‚ÍmyFunc‚Ì–ß‚è‚Å‚ ‚éY‚ðŽg‚Á‚Ĉ—‚𑱂¯‚é‚Ì‚ÅOneWay‚ł͈Ӗ¡‚ª‚ ‚è‚Ü‚¹‚ñ const ox = await new Promise(resolve=>
libFunc(x=> {
// y‚ðì¬
resolve(x)
return y
}))
‚Æ‚©‚¶‚á‘Ê–Ú‚È‚ñH
>>857
‚ ‚‚Ü‚Å>>854‚Æ‚¢‚¤‘O’ñ‚ª‚ ‚é‚Ì‚ÅlibFunc‚ðŒÄ‚Ño‚·ƒ^ƒCƒ~ƒ“ƒO‚Í‚±‚¿‚ç‚Å‚Í‘I‚ׂ܂¹‚ñ >>856
‚â‚肽‚¢‚±‚Æ‚ª‚¢‚Ü‚¢‚¿‚í‚©‚ç‚ñ‚ªA“¯ŠúŒÄ‚Ño‚µ‚ÅmyFunc‚ÌŒ‹‰Ê‚ðŽæ“¾‚µ‚½‚¢‚Æ‚¢‚¤‚È‚ç‚»‚ê‚Í–³—B Promise‚àŽg‚¦‚È‚¢‚È‚ç‚à‚¤ˆê‚Â̂̃R[ƒ‹ƒoƒbƒNƒwƒ‹•ûŽ®‚Å‚â‚邵‚©‚È‚¢‚Ë
>>858
‰½‚ª‚â‚肽‚¢‚©‚í‚©‚ñ‚Ë`
myFunc‚³‚¦“o˜^‚Å‚«‚è‚ᔓWŒ`‚Å‚â‚è—lŽq‚Í‚ ‚é‚ÆŽv‚¤‚¯‚Ç •Ï”‚Ì擪‚É$‚ð•t‚¯‚é‚͉̂½‚̈Ӗ¡‚ª‚ ‚é‚Ì‚Å‚µ‚傤H
DOM ‚̃GƒŒƒƒ“ƒg‚¾‚æ‚Á‚ÄŽ¦‚·
PHPer‚Å‚ào—ˆ‚½I‚ÆŽå’£‚·‚é
C‚Ì __FILE__ ‚â __LINE__ ‚Ý‚½‚¢‚Ƀgƒ‰ƒ“ƒXƒpƒCƒ‹‘O‚̃tƒ@ƒCƒ‹–¼‚âs”Ô†‚ð–„‚ßž‚Þ•û–@‚Á‚Ä–³‚¢‚Ì‚©‚ÈH
ˆê‰žsource-map-support‚ŃXƒ^ƒbƒNƒgƒŒ[ƒX‚Í“Ç‚ß‚é‚悤‚É‚È‚Á‚½‚¯‚ÇA‚à‚Á‚ÆŽèŒy‚É–„‚ßž‚ÞƒƒO‚Å
êŠ‚ðŽ¦‚¹‚½‚ç‚¢‚¢‚ñ‚¾‚ªB
TypeScript ‚ÌŽdŽ–‚¶‚á‚È‚¢
tsc‚Ì‘O‚ɃvƒŠƒvƒƒZƒbƒT‚Æ‚©‚©‚Ü‚µ‚ÄŽÀŒ»‚Å‚«‚é‚È‚ç‚»‚ê‚Å‚à‚¢‚¢‚ñ‚¾‚¯‚ÇB
‚µ‚傹‚ñ‚̓gƒ‰ƒ“ƒXƒpƒCƒ‰
‘½‚‚ð‹‚ß‚½‚çƒ_ƒ‚¾
>>866
‰pŒê‚Å‹c˜_‚Å‚«‚ê‚Î’ñˆÄ‚·‚ê‚΂¢‚¢‚ÆŽv‚¤‚¯‚Ç‚Ë >>868
Žè“®‚Å‚â‚é‚Ì‚ÍŠÈ’P‚¾‚æ‚ËH
TSŽg‚Á‚Ä‚È‚¢‚©‚çƒrƒ‹ƒhƒVƒXƒeƒ€’m‚ç‚ñ‚¯‚ÇAPython‚©‰½‚©‚ð‹²‚Ýž‚ß‚é—]’n‚ª‚ ‚Á‚½‚ç‚»‚±‚Å‚â‚Á‚Ä‚µ‚Ü‚¦‚ÎH
ˆ½‚¢‚Í‚¢‚Á‚»‚Ì‚±‚Æmakefile‚щƒbƒv‚µ‚Ä‚µ‚Ü‚¤‚Æ‚©B(makefile“à‚Ńrƒ‹ƒhƒRƒ}ƒ“ƒh‚ð‹N“®j ‚ ‚肪‚Æ‚¤B–³‚¢‚Á‚Ä‚±‚Æ‚ËB
>>872
‘½•ª‚ËBi‰´‚Í871ATSŽg‚Á‚Ä‚È‚¢j
‘¼Œ¾Œêi‰½‚¾‚Á‚½‚©‚Í–Y‚ꂽj‚Å‚à“¯—l‚Éu‚È‚¢‚Ì‚©Hv‚Á‚Ä•·‚©‚ê‚Ä‚ÄA
Žd—l‚É“ü‚ê‚È‚¢——R‚ªu‚¿‚á‚ñ‚ÆŠÖ”–¼‘‚¯v‚¾‚Á‚½‚ÆŽv‚Á‚½‚æB
ŽÀÛ‚ ‚ê‚Á‚ÄAŽÀ‘•‚·‚é‚Ì‚ÍŠÈ’P‚¾‚¯‚ÇAC‚É‚µ‚©‚È‚¢‚Å‚µ‚åB
ŒÂlŠJ”‚È‚ç‚Æ‚à‚©‚AGit‚È¡‚¾‚Æ•¡”ƒo[ƒWƒ‡ƒ“‚ª“¯Žž‚ÉŽg‚í‚ê‚Ä‚½‚è‚·‚é‚©‚çAŽûE•t‚©‚È‚‚È‚é‚Ì‚Å‚Í‚È‚¢‚©‚ÈB
‚»‚Ì•Ó‚ÌC‚Ì•Ö—˜‹@”\‚Á‚ÄA¡‚Ì‘å‹K–ÍŠJ”‚ɂ̓tƒBƒbƒg‚µ‚È‚¢‚©‚çAŠî–{“I‚É‚ÍŒ™‚í‚ê‚Ä‚éB
‘½•ªA’ñˆÄ‚µ‚½‚Æ‚±‚ë‚Å“ü‚ç‚È‚¢B TypeScript‚̃|ƒŠƒV[“I‚Éâ‘Γü‚ç‚È‚¢
‹Zp“I‚É‚»‚¤“‚‚à‚È‚³‚»‚¤‚È‚Ì‚É¡–³‚¢‚Á‚Ä‚±‚Æ‚Í‚à‚¤“ü‚ê‚ç‚ê‚錩ž‚Ý‚Í–³‚¢‚ñ‚¾‚낤‚¯‚Ç
‚±‚ꂪâ‘΂ɑŠ—e‚ê‚ç‚ê‚È‚¢‚悤‚ȃ|ƒŠƒV[‚Á‚Ä‚È‚ñ‚©‚ ‚Á‚½‚©‚ÈH
TS‚Á‚Ä–Å‘½‚ɃNƒ‰ƒXŽg‚í‚È‚¢‚¯‚ÇDI‚Á‚Ä‚Ç‚¤‚â‚Á‚Ä‚ñ‚ÌH
ƒNƒ‰ƒX‘S‚Žg‚í‚È‚¢‚킯‚¶‚á‚È‚¢‚æB‚Ü‚Ÿ–¾Ž¦“I‚É•›ì—pŽg‚¢‚½‚¢Žž‚®‚ç‚¢‚µ‚©Žg‚í‚È‚¢‚¯‚Ç
DI‚ÌŒ‚Í‚±‚ê‚Å‰ðŒˆ‚µ‚½
function F(deps: { c }, p1: T1, p2: T2)
‚æ‚‚æ‚l‚¦‚é‚Æ
‚½‚Á‚½‚±‚ꂾ‚¯‚Ì‚±‚Æ‚¾‚Á‚½‚ñ‚¾
ƒtƒŒ[ƒ€ƒ[ƒN‚Æ‚©‚â‚₱‚µ‚¢‚±‚Æ‚ðl‚¦‚½‚Ì‚ªŠÔˆá‚¢‚¾‚Á‚½
type X = {
foo: string;
bar: string;
baz: string;
}
‚±‚ÌŒ^‚©‚ç
type Y = {
foo: string;
bar: string;
}
‚±‚ÌŒ^‚ðMappedTypes‚Å’è‹`‚µ‚½‚¢
‚‚܂è“Á’è‚Ì‘®«‚𜋎‚µ‚½Œ^‚ðì‚肽‚¢‚Ì‚¾‚¯‚Ço—ˆ‚éH
Utility Types ‚Ì Omit ‚Æ‚©B
.NET‚Å‚¢‚¤‚Æ‚±‚ë‚Ì.NET Standard‚̂悤‚È‚à‚Ì‚Á‚ÄTS‚É‚Í–³‚¢‚ÌH
ƒtƒ‹ƒXƒ^ƒbƒN‚ÅTSŽg‚¤ˆÄŒ‚ÉŠÔˆá‚Á‚Ä“ü‚Á‚¿‚á‚Á‚½‚ñ‚¾‚¯‚NJ‹«‚²‚Ƃɉ½‚ªo—ˆ‚é‚Ì‚©”cˆ¬‚µ‚«‚ê‚È‚‚ăcƒ‰ƒ~‚ðŠ´‚¶‚é
ƒXƒgƒŠ[ƒ€‚Æ•¶Žš—ñ‚̈—‚Ý‚½‚¢‚Èu‚±‚ñ‚È‚à‚ñ‚ǂ̊‹«‚Å‚à“®‚‚¾‚ëv‚Á‚ăR[ƒh‚·‚çˆÚA‚·‚é‚Æ“®‚©‚È‚¢Žž‚ª‚ ‚Á‚Ä‹ƒ‚«‚»‚¤
ƒXƒ^ƒ“ƒ_[ƒh‚ȃ‰ƒCƒuƒ‰ƒŠ‚ª–³‚¢‚È‚çƒrƒ‹ƒ_[‚ÌÝ’è‚Å‚à‚¢‚¢
tsconfig‚Ń^[ƒQƒbƒgƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ƃ‰ƒ“ƒ^ƒCƒ€ƒo[ƒWƒ‡ƒ“‚ðŽw’è‚·‚é‚Æu‚±‚̃pƒbƒP[ƒW‚Í‚±‚̃^[ƒQƒbƒgƒvƒ‰ƒbƒgƒtƒH[ƒ€‚Å‚ÍŽg‚¦‚È‚¢‚æv‚Á‚Ä‹³‚¦‚Ä‚‚ê‚邾‚¯‚Å‚à‚¾‚¢‚ÔŠy‚É‚È‚é‚ÆŽv‚¤‚ñ‚¾‚¯‚Çc
‚±‚¤‚¢‚¤‹@”\‚Á‚Ä‚Ç‚Á‚©‚Éâ‘΂ ‚é‚ÆŽv‚¤‚ñ‚¾‚¯‚ǃOƒO‚Á‚Ä‚àŒÃ‚¢’f•Ð“I‚Èî•ñ‚΂Á‚©‚èo‚Ä‚«‚Ä‚»‚ÌÝ’è‚ð’T‚·‚Ì‚à“‚¢
Žå‚ÈŽÀsŠÂ‹«‚Æ‚µ‚Ä node.js ‚ƃuƒ‰ƒEƒU‚ª‚ ‚é‚Á‚Ä‚±‚Æ‚Í‚í‚©‚Á‚Ä‚éH
‚ ‚Æ‚Í“D‚Æ‚è‚ñ‚²‚Å‚µ‚åH
‚¹‚ß‚Ä‚»‚Ì4‚‚̃ƒWƒƒ[‚Ȋ‹«‚Å‚Ù‚Ú‚Ù‚Ú“¯‚¶‚悤‚É“®‚Šî–{ƒ‰ƒCƒuƒ‰ƒŠAŠî–{ƒ‰ƒCƒuƒ‰ƒŠ‚¾‚¯‚Ɉˑ¶‚µ‚ÄA‚‚܂è‚Ù‚Ú‚Ù‚Ú‚Ç‚±‚Å‚à“®‚ƒT[ƒhƒp[ƒeƒBƒ‰ƒCƒuƒ‰ƒŠ
‚»‚ê‚炪“úí“I‚Èì‹Æ‚É•sŽ©—R‚µ‚È‚¢ƒŒƒxƒ‹‚Å‘µ‚Á‚Ä‚Ä‘R‚é‚ׂ«‚¾‚낤A‚Ɖ´‚ÍŽv‚¤‚ñ‚¾‚¯‚Ç–³‚¢‚Ì‚©‚ÈH
Šî–{ƒ‰ƒCƒuƒ‰ƒŠ‚Æ‚¢‚¤‚È‚çJavaScript APIŒQ‚ª‚ ‚邪B
u“úí“I‚Èì‹Æ‚É•sŽ©—R‚µ‚È‚¢ƒŒƒxƒ‹v‚Á‚Ä‹ï‘Ì“I‚É‚Í‚Ç‚ñ‚È‚à‚Ì‚ðŠú‘Ò‚µ‚Ä‚¢‚éH
.NET Standard‚®‚ç‚¢‚Ì‘z’è‚©‚È
‚Ü‚¸.NET‚ª¢ŠE‚Ì’†SB‚Ý‚ñ‚È’m‚Á‚Ă邾‚ë‘S•”‘µ‚Á‚Ä‚Ä“–‘R‚¾‚ë‚Ý‚½‚¢‚Èl‚¦•û‚ð‚â‚ß‚ëB
ƒtƒƒ“ƒg‘¤‚ɂ‚¢‚Ă̓TƒC‚ÌŠG‚ª‘‚¢‚Ä‚ ‚é–{”ƒ‚Á‚Ä‚‚é‚©AMDN‚ðn“Ç‚·‚ê‚Ηǂ¢BNode‘¤‚ÍNode‚ÌŒöŽ®‚ð“Ç‚ßB˜b‚Í‚»‚ê‚©‚çB
‚ ‚Æ‚Ítsconfig‚ÌcompilerOptionsˆÈ‰º‚Ìtarget‚Ælib‚ðŽw’肵‚ëB‚±‚Ì•Ó‚ÍNode‚̃o[ƒWƒ‡ƒ“‚âA‘ÎÛƒuƒ‰ƒEƒU‚Å•Ï‚í‚é‚©‚çƒOƒO‚êB‚·‚®o‚Ä‚‚éB
> Žå‚ÈŽÀsŠÂ‹«‚Æ‚µ‚Ä node.js ‚ƃuƒ‰ƒEƒU‚ª‚ ‚é‚Á‚Ä‚±‚Æ‚Í‚í‚©‚Á‚Ä‚éH
> ‚ ‚Æ‚Í“D‚Æ‚è‚ñ‚²‚Å‚µ‚åH
‚±‚ê‚í‚©‚Á‚Ä‚È‚¢‚¾‚ë
Ž©•ª‚Í’m‚Á‚Ä‚¢‚é‚Ý‚½‚¢‚ÈöŠo‚µ‚Ă邹‚¢‚Ū–{“I‚ÉŠÔˆá‚Á‚Ă邱‚Æ‚É‹C‚¢‚Ä‚È‚¢
https://stackoverflow.com/questions/57435686/filereader-is-not-defined-with-angular-server-side-rendering
“K“–‚ɃOƒO‚Á‚½‚炱‚ñ‚È‚ñ‚ ‚Á‚½‚¯‚ÇA
—v‚·‚é‚ÉA‚±‚¤‚¢‚¤‚±‚Æ‚¾‚æ‚È
‚±‚ê‚Í‚½‚¾‚̈ê—Ⴞ‚¯‚ÇAƒXƒgƒŠ[ƒ€‚Æ•¶Žš—ñ‚Ì•ÏŠ·‚È‚ñ‚Ä‚È‚ñ‚©‚Í‚³A‚¢‚¢‚©‚¢H
‘S‚Ä‚ÌŠJ”ŽÒ‚ªAƒhƒLƒ…ƒƒ“ƒg‚ðn“Ç‚¹‚¸A‰½‚Ì–À‚¢‚à‚È‚AƒCƒ“ƒeƒŠƒZƒ“ƒX‚É“±‚©‚ê‚ÄAƒXƒ‰ƒXƒ‰‚Æ‘‚¯‚Ä‚¾‚æ
‚»‚µ‚ÄA‚»‚ꂪ‹Á‚«Å¬‚ÅAŽv‚Á‚½’Ê‚è‚É“®ì‚·‚é
‚»‚ꂪƒ‚ƒ_ƒ“‚È‚‹‰Œ¾Œê‚Æ‚µ‚ÄA“–‚½‚è‘O‚ÌŽp‚È‚ñ‚¶‚á‚È‚¢‚Ì‚©‚¢H
TS‚̃ƒ“ƒeƒi‚Í^V‚µ‚³‚΂©‚è’Ç‚¢‹‚ß‚ÄA‘«ê‚ðŒÅ‚ß‚é‚Æ‚¢‚¤A’n–¡‚¾‚ª‘åØ‚ÈŽdŽ–‚ð–Y‚ê‚Ă₵‚È‚¢‚©H ª–{“I‚ÈŠ¨ˆá‚¢‚Æ‚µ‚ÄA‚»‚ê‚ÍTypeScript‚ÌÓ–±‚Å‚Í–³‚¢BTypeScript‚ÍJavaScript‚Ƀ‚ƒ_ƒ“‚ÈŒ^‚ð•t—^‚·‚é‚à‚Ìiˆê•”—áŠO‚Í‚ ‚éj‚ÅAAPI‚Ì’ñ‹Ÿ‚Í‚µ‚È‚¢B
—á‚Éo‚Ä‚«‚½FileReader‚Ì—l‚ÈAPI‚̓uƒ‰ƒEƒU‚ÆNode‘¤‚Å‹‚ß‚ç‚ê‚é‹@”\‚àƒZƒLƒ…ƒŠƒeƒBƒŒƒxƒ‹‚àˆÙ‚È‚èA‚»‚ꂼ‚ꂪ’ñ‹Ÿ‚·‚é‚à‚Ì‚¾B‚»‚ê‚ð“ˆê‚Í‚Å‚«‚È‚¢B‚Ü‚µ‚Änpm‚̃oƒbƒP[ƒW‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚̂̓pƒbƒP[ƒWìŽÒ‚ªÓ–±‚𕉂¤‚à‚Ì‚¾B
Ž©•ª‚̕׋•s‘«‚ð’I‚Éã‚°‚ÄŒ¾Œê‚É•¶‹å‚ðŒ¾‚¤‚̂͋؈Ⴂ‚à—Ç‚¢‚Æ‚±B
‚»‚±‚ªTS‚ÌŒÀŠE‚Å‚ ‚èAŽg‚¢‚É‚‚¢Œ´ˆö‚È‚ñ‚¾‚ë‚È‚Ÿ
FileReader‚È‚ñ‚Ä‚Ì‚Í‚½‚Ü‚½‚Üo‚Ä‚«‚½ˆê—á‚Å‚µ‚©‚È‚¢‚ª
ƒŠƒ“ƒNæ‚̃|ƒXƒg‚ð“Ç‚ß‚ÎAƒgƒsŽå‚Ì‚â‚肽‚¢‚±‚Ƃ̓XƒgƒŠ[ƒ€‚©‚當Žš—ñ‚Ö‚Ì•ÏŠ·‚Æ‚í‚©‚邾‚낤
‚»‚Ì’ö“x‚͂ǂ̃vƒ‰ƒbƒgƒtƒH[ƒ€‚Å‚àƒTƒ|[ƒg‚Å‚«‚é
Žg—p•p“x‚à‚»‚±‚»‚±‚¾‚©‚çA•W€ƒ‰ƒCƒuƒ‰ƒŠ‚Æ‚µ‚Ä—pˆÓ‚³‚ê‚Ä‚¢‚Ä“–‚½‚è‘O
encode(s: string, format: string): Blob
decode(b: Blob, format: string): string
‚±‚ê‚Å‚¢‚¢‚¾‚ëH
ƒZƒLƒ…ƒŠƒeƒB‚âƒn[ƒhƒEƒFƒA‚Ɉˑ¶‚·‚é‚à‚Ì‚ª•W€‰»‚³‚ê‚È‚¢‚Ì‚Í‹–‚³‚ê‚邾‚낤
‚µ‚©‚µ‚È‚ºŠÈ’P‚É‚Å‚«‚é‚à‚Ì‚·‚ç•W€‰»‚µ‚È‚¢H
‚»‚̃XƒgƒŠ[ƒ€‚Á‚Ă͉̂½‚̃XƒgƒŠ[ƒ€H
‚Ђå‚Á‚Æ‚µ‚Ä—pŒê‚ðŠÔˆá‚¦‚Ä‚é‚©‚ç’²‚ׂĂào‚Ä‚±‚È‚¢‚Ì‚Å‚ÍH
>>888
Œ^‰‰ŽZ‚É––”öÄ‹AÅ“K‰»i‚Ý‚½‚¢‚È‚Ìj’ljÁ‚³‚ê‚é‚â‚ñI Œ^‚Ì@types ‚¾‚¯ƒCƒ“ƒ|[ƒg‚·‚é‚É‚Í‚Ç‚¤‚µ‚½‚ç‚æ‚¢‚Å‚µ‚傤‚©B
leaflet‚Æ‚¢‚¤’n}‚Ìjsƒ‰ƒCƒuƒ‰ƒŠ‚ª‚ ‚Á‚ÄAƒOƒ[ƒoƒ‹‚ÅL ‚Æ‚¢‚¤•Ï”‚ðnamespace‚Æ‚µ‚ÄŽg‚Á‚Ä‚¢‚Ü‚·B
npm‚Ì‘w‚ð”–‚‚µ‚½‚‚ÄA’n}ƒ‰ƒCƒuƒ‰ƒŠ‚Ínpm ‚ðŽg‚킸‚Éhtml‚Éscriptƒ^ƒO‚ð’¼Ú‘‚¢‚Ä“Ç‚Ýž‚ñ‚Å‚¢‚Ü‚·B
‚Å‚àŒ^•âŠ®‚Í—~‚µ‚¢‚Ì‚ÅA"@types/leaflet"‚Ínpm‚ŃCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·B
‚±‚Ìó‘Ô‚Å•Ï”L ‚ÉŒ^•âŠ®‚ð“®ì‚³‚¹‚é‚É‚Í‚Ç‚¤‚·‚ê‚΂悢‚Å‚µ‚傤‚©B
‰½‚à‚µ‚È‚¢‚ÆA•Ï”L‚Í–¢’è‹`‚¾‚æ ‚Æ‚¢‚¤ƒGƒ‰[‚ªo‚Ü‚·B
(ƒGƒ‰[‚ðÁ‚·‚¾‚¯‚È‚ç“K“–‚Èd.ts‚ðì‚Á‚Ä declare const L: any; ‚Æ‚Å‚à‘‚¯‚΂¢‚¢‚ñ‚¾‚낤‚¯‚Ç)
import type * as Leaflet from 'leaflet'
declare const L: typeof Leaflet
‹ó”z—ñ‚Á‚Ä‚Ç‚¤‚â‚Á‚Ä’è‹`‚·‚ê‚΂¢‚¢‚ñ‚Å‚µ‚傤‚©H
Date‚ªŽg‚¢‚É‚‚¢‚Ì‚Ç‚¤‚É‚©‚·‚éÅ‚‚̃‰ƒCƒuƒ‰ƒŠ‹³‚¦‚Ä‚æ
date-nfsAmoment‚ ‚½‚è‚ÍŽŽ‚µ‚½‚¯‚Ç‚µ‚Á‚‚肱‚ñ‚©‚Á‚½‚í
JSON‚ª”ñ‘ÎÌ‚Á‚Ä‚Ì‚àSo Bad‚â‚Å‚Ù‚ñ‚Ü
‚æ‚‚±‚ñ‚Èã©‚¾‚炯‚ÌŒ¾Œê‚Å‚â‚Á‚Ä‚ç‚ê‚é‚È[
ƒtƒƒ“ƒgƒGƒ“ƒh¨‚Ì”E‘Ï—Í‚É‚Í‘¸Œh‚Ì”O‚ð‹Ö‚¶‚¦‚ñ‚í‚¢
>>899
> JSON‚ª”ñ‘ÎÌ
‚Æ‚ÍH
JSON.parse, JSON.stringify ’m‚Á‚Ä‚é‚©H >>899
date-nfs‚Å‘Ê–Ú‚È‚çƒIƒXƒXƒ‚Í–³‚¢‚©‚È‚ŸB
‚²Žw“E‚Ì’Ê‚èã©‚à‘½‚¢‚¯‚ÇC++‚Æ‚©‚É”ä‚ׂ½‚炸‚Á‚ÆŠy‚ÈŒ¾Œê‚¾‚ÆŽv‚¤‚È >>899
> Date‚ªŽg‚¢‚É‚‚¢‚Ì‚Ç‚¤‚É‚©‚·‚é
‚»‚ñ‚È‚ ‚È‚½‚É Temporal Effective TypeScript
‚¿‚ƌ¢‚ª“Ç‚ñ‚¾•û‚ª‚¢‚¢H
‚ [‚‚»
‚È‚ñ‚Åstrict‚ðOFF‚É‚Å‚«‚é‚ñ‚¾‚æ
VB.NET‚©I
‚¢‚â‚È‚ñ‚Åfalse‚É‚·‚é‚ñ‚¾‚æ
Šù‘¶‚Ì JavaScript ‚ð’iŠK“I‚ɈÚs‚µ‚½‚¢Žž‚©‚È
”ñ“¯Šú‚ª‚æ[‚í‚©‚ç‚ñ
ƒ[ƒJ[‚ðl‚¦‚È‚¢ê‡
ƒuƒ‰ƒEƒU‚Å‚àƒ‚ƒoƒCƒ‹‚Å‚àƒoƒbƒNƒGƒ“ƒh‚Å‚àŠî–{“I‚Ɉê–{‚̃Lƒ…[‚ɃWƒ‡ƒu‚ð“ü‚ê‚Ä‚Á‚ćŽŸˆ—‚·‚郂ƒfƒ‹
promise‚âawait‚ðŽg‚¤‚ƈ—‚Ì‘OŒãŠÖŒW‚Í•ÛႳ‚ê‚邯‚ÇŠÔ‚É‘¼‚̃Wƒ‡ƒu‚ªŠ„‚螂މ”\«‚ª‚ ‚é
ˆ—‚»‚Ì‚à‚̂̓Vƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Ås‚í‚ê‚é‚Ì‚Åpromise‚âawait‚ð‹²‚Ü‚È‚¢ŒÀ‚è‘S‚Ä‚ÌJSƒR[ƒh‚ªƒAƒgƒ~ƒbƒN‚ÉŽÀs‚³‚ê‚é
fetch‚È‚ÇJSŠO‚̈—‚ɂ‚¢‚Ă̓Aƒgƒ~ƒbƒN‚Í•ÛႳ‚ê‚È‚¢
‚±‚ñ‚ÈŠ´‚¶‚Å‚ ‚Á‚Æ‚éHHH
>>907
‚¾‚¢‚½‚¢‡‚Á‚Ä‚éBŠî–{“I‚ɂ͈—‚Ì—\–ñ‚Æl‚¦‚邾‚¯‚ÅÏ‚ÞB
JSŠO‚̈—‚ÍWebWorkerŠÜ‚ß‚ÄJSŠÂ‹«‚ÉŠ±Â‚µ‚Ä‚±‚È‚¢‚ñ‚¾‚©‚çi–ß‚è’lˆÈŠOj‚Ù‚ÚƒCƒxƒ“ƒg‚Æ‚©Š„ž‚Æ“¯Ž¿‚Å“ÁŽê‚È‚à‚Ì‚¾‚Æl‚¦‚é•K—v‚à‚È‚‚È‚¢‚©‚ÈH ‚È‚ñ‚©ƒvƒƒWƒFƒNƒg‚ÅtypescriptŽg‚¤—¬‚ê‚É‚È‚Á‚Ä¡‚©‚ç•×‹‚µ‚Ä‚é‚ñ‚¾‚ªA‚±‚ꉽ‚É—D‚ê‚Ä‚é‚ÌH
javascript‚ÌŠg’£Œ¾Œê‚ÅŒ^‚Ì錾‚Å‚«‚é‚®‚ç‚¢‚ªƒƒŠƒbƒgH
ŽÀs‚·‚邽‚ß‚É‚¢‚¿‚¢‚¿ƒRƒ“ƒpƒCƒ‹‚à‚Ç‚«‚È‚±‚Æ‚ð‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‚µƒfƒoƒbƒO–Ê“|‚ų’¼‚â‚è‚Â炢‚Æ‚µ‚©Žv‚¦‚È‚¢‚ñ‚¾‚ª
u³’¼A“Á•Ê—D‚ꂽŒ¾ŒêÝŒv‚Å‚à‚È‚¢‚µAŠî–{“I‚ȃ‰ƒCƒuƒ‰ƒŠ•nŽã‚¾‚µA‚È‚ñ‚©FX‚Æ•sˆÀ’è‚È‚Ì‚ÅA‘¼‚ÌŒ¾Œê‚ðŽg‚¦‚é‚È‚ç‚»‚Á‚¿‚Ì‚ª‚¢‚¢B
‚Å‚àJavaScript‚æ‚è‚©‚Í—y‚©‚Ƀ}ƒV‚¾‚©‚çƒ^[ƒQƒbƒgƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ªƒuƒ‰ƒEƒUAReactNative‚È‚çÏ‹É“I‚ÉŽg‚Á‚Ä‚¢‚±‚¤‚ºv‚®‚ç‚¢‚Ì”FŽ¯‚Å‚·‚©‚Ë
Œ^ƒpƒYƒ‹‚Æ‚©‚ä‚é‚ä‚é‚ȃCƒ“ƒ^[ƒtƒF[ƒX‚Æ‚©Å‰‚Í‚±‚è‚áŠyƒ`ƒ“A•Ö—˜‚¾‚È‚ÆŽv‚¤‚¯‚ǃƒ“ƒeƒiƒ“ƒX«‚Í‹^–â
‚ ‚ÆTypeScript‚Ͷ‚ÌJavaScript‚æ‚èany‚Ì‹¥ˆ«‚³‚ª‘‚µ‚Ä‚é‚ÆŽv‚¤
Š‘F‚ÍALT JS‚Å‚·‚Ë
>>910
watchŽg‚¤‚Æ‚í‚´‚í‚´ƒRƒ“ƒpƒCƒ‹‚·‚éŽèŠÔ‚ªÈ‚¯‚é‚Ì‚ÅŠy‚¾‚æB‚ ‚Æmapƒtƒ@ƒCƒ‹‚ào—Í‚·‚é‚悤‚É‚·‚ê‚΃fƒoƒbƒNŽž‚à–Ê“|‚¶‚á‚È‚‚È‚é‚æB
Œ^‚¾‚¯‚¶‚á‚È‚‚ÄA“¯‚¶ƒR[ƒh‚Ō¢ŠÂ‹«‚Å‚à“®‚ƒ\[ƒX‚ð“f‚‚±‚Æ‚à‚Å‚«‚é‚æB
‚Å‚àAŒ^‚ɃƒŠƒbƒg‚ðŒ©‚¢‚¾‚³‚È‚¢lŒü‚¯‚ÌŒ¾Œê‚Å–³‚¢‚ËB “®“IŒ^•t‚¯Œ¾Œê‚µ‚©Žg‚Á‚½‚±‚Æ‚ª‚È‚¢l‚È‚ç‚»‚ñ‚È‚à‚Ì‚¾‚æ‚Ë
ŒÂlŠJ”‚¾‚ÆTypeScriptƒKƒ“ƒKƒ“Žg‚Á‚Ä‚é
Œ^ƒpƒYƒ‹‚½‚Ì‚¿‚¢
Œ^ƒpƒYƒ‹‚̓Aƒ“ƒ`ƒpƒ^[ƒ“‚¾
‚Ù‚Ç‚Ù‚Ç‚É‚µ‚Æ‚¯
l—Þ‚ÍC++‚ð‹³ŒP‚É‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢
TypeScript‚É‚ÍSFINAE‚Ý‚½‚¢‚È‹¥ˆ«‚ÈŽd—l‚Í‚È‚¢‚¾‚낤B
conditional type‚Í‚µ“ï‰ð‚©‚à‚µ‚ê‚È‚¢‚ªŽ©•ª‚ÅŽg‚í‚È‚¯‚ê‚΂¢‚¢‚¾‚¯‚Ì‚±‚Æ‚¾‚µB
anyŒ^‚̃f[ƒ^‚ð‚»‚êˆÈŠO‚ÌŒ^‚É•ÏŠ·‰Â”\‚©‚Ç‚¤‚©”»’è‚·‚éA‚Ü‚½‚Í•ÏŠ·‚·‚郉ƒCƒuƒ‰ƒŠ‚Á‚Ä‚ ‚è‚Ü‚·H
«‚±‚ñ‚ÈŠ´‚¶‚Ì
type T = { id: number; name?: string; timestamp: Date; }
const data1: any = { id: 1, name: gbobh, timestamp: new Date() }
const t1: = convert<T>(data1); // OK
const data2: any = {
id: g2h, // number format string
timestamp: g2021-12-21T11:00:00Zh, // ISO Date string
}
const t2 = convert<T>(data2); // OK
const data3: any = { // without required field
timestamp: new Date()
}
const t3 = convert<T>(data3); // throw Error
const data4: any = {
id: 4,
timestamp: ghelloh // invalid format
}
const t4 = convert<T>(data4) // throw Error
TypeScript‚Á‚ÄŒ^‚ª‰R‚ð‚‚‚±‚Æ‚ªŒ‹\‚ ‚Á‚Ä
DateŒ^‚È‚Ì‚ÉŽÀsŽž‚É‚Í•¶Žš—ñ‚ª“ü‚Á‚Ä‚é‚Æ‚©
Œ^’è‹`‚Å‚ÍÈ—ª•s‰Â‚È‚Ì‚ÉŽÀsŽž‚É‚ÍÈ—ª‚³‚ê‚Ä‚é‚Æ‚©
‚»‚¤‚¢‚¤ŽÀsŽž‚ÌŒ^ƒGƒ‰[‚ð‚È‚ñ‚Æ‚©‚µ‚Ä팸‚µ‚½‚¢A‚Æ‚¢‚¤‚Ì‚ªª–{“I‚ȉۑè‚Å‚·
ã‚ŃŒƒX‚µ‚½‚悤‚ȃ‰ƒCƒuƒ‰ƒŠ‚ª‚à‚µ—L‚ê‚Α½‚̓}ƒV‚É‚È‚é‚©‚ÈA‚Æ
ƒ‰ƒ“ƒ^ƒCƒ€‚ªƒLƒƒƒXƒg—áŠO‚ð“Š‚°‚Ä‚‚ê‚ê‚΂»‚ꂪƒxƒXƒg‚È‚ñ‚Å‚·‚ªAJS‚ÉŽÀsŽžŒ^î•ñ‚Í‚È‚¢‚Ì‚Å‚»‚ê‚͓‚¢
> JS‚ÉŽÀsŽžŒ^î•ñ‚Í‚È‚¢‚Ì‚Å
‚Â typeof, instanceof
‚·‚°[ŽÎ‚ß“Ç‚Ý‚µ‚ă^ƒCƒvƒK[ƒh‚Å‚Í‚¢‚©‚ñ‚Ì‚©‚ÆŽv‚Á‚½
ƒ^ƒCƒvƒK[ƒh‚Å‚à‚¢‚¢‚ñ‚Å‚·‚¯‚Ç”‚ª‘½‚¢‚̂ňꔂőS•”‚悵‚È‚É‚â‚Á‚Ä‚‚ê‚é‚à‚Ì‚ª‚Ù‚µ‚¢‚Á‚ÄŠ´‚¶‚Å‚·‚©‚Ë
C#‚Ìdynamic‚̂悤‚É”ñŒÝŠ·‚Ì‘ã“ü‚ð‚»‚Ìê‚Å—áŠO‚É‚µ‚Ä‚‚ê‚ê‚Ίy‚È‚ñ‚Å‚·‚ª
‚È‚ñ‚Å‚©any‚Í”ñŒÝŠ·‚Å‚àƒGƒ‰[–³‚µ‚ŃXƒ‹ƒb‚Æi‚ñ‚Å‚µ‚Ü‚¤‚Ì‚Å‹ê˜J‚µ‚Ä‚Ü‚·
>>922
‚Ç‚¤‚à
‚È‚©‚È‚©—Ç‚³‚»‚¤‚¾‚¯‚Ç‚¿‚å‚Á‚Æ‘å•Ï‚»‚¤
•’Ê‚ÌŒ^‚ðæ‚É’è‹`‚µ‚ăp[ƒT[‚𶬂·‚é‚͓̂‚¢‚ñ‚Å‚·‚©‚Ë? TypeScript‚Ìtype‚âinterface‚©‚çjsonschema‚𶬂·‚郉ƒCƒuƒ‰ƒŠ‚ª‚ ‚é‚©‚ç
‚»‚ê‚ðŽg‚Á‚ă^ƒCƒvƒK[ƒh‘‚¯‚Ίy‚æB
‚»‚¤‚¢‚¦‚ÎAJV‚ªƒ^ƒCƒvƒK[ƒh‚ɑΉž‚µ‚Ä‚½‚È
>>925
‚¢‚¢‚©‚à
‚ ‚Æ‚Íany‚Ì‘ã“ü‚ðŽ©“®“I‚É’u‚«Š·‚¦‚邱‚Æ‚ª‚Å‚«‚ê‚Ί®àø string -> Date ‚̂悤‚È transform ‚ð‚µ‚½‚¢‚È‚çAŒ^‚©‚玩“®¶¬‚ðŠú‘Ò‚·‚é‚æ‚è‚àƒXƒL[ƒ}‚Å•ÏŠ·ƒƒWƒbƒN‚ð‘‚¢‚ÄŒ^‚ð“±o‚·‚éƒAƒvƒ[ƒ`‚Ì•û‚ªˆµ‚¢‚â‚·‚¢
axios‚Å‚Ìi”ñ“¯Šúj’ÊMŒ‹‰Ê‚©‚ç
ÅI“I‚Épromise‚ðŠO‚µ‚½Œ`‚Åresponseˆµ‚¢‚½‚¢‚ñ‚¾‚¯‚Ç
‚Ç‚¤‚â‚é‚Æ‚Å‚«‚é‚Ì‚Å‚µ‚傤‚©H
function“I‚È“z‚Å”ñ“¯Šú’ÊM‚µ‚Ä
‚»‚ÌfunctionŽ©‘Ì‚Ípromise‚Å‚È‚¢’l‚ð•Ô‚µ‚½‚¢‚ñ‚¾‚¯‚ÇBBB
await‚â‚낤‚ÆŽv‚¤‚Æ
‚»‚Ìfunction‚Íasync‚É‚È‚Á‚Ä
Œ‹‹Çpromise‚É‚È‚Á‚Ä‚µ‚Ü‚¤
ƒCƒ[ƒW
conct func = (): string => {
// axios‚̖߂肪string‚¾‚Æ‚µ‚ÄA‚±‚Ìval‚𓯊ú“I‚É•Ô‚µ‚½‚¢
axios.get("hogehoge").then(val=>{return val})
}
•s‰Â”\‚Å‚·
’¼Ú XMLHttpRequest ‚𓯊úƒ‚[ƒh‚ÅŽg—p‚µ‚Ä‚‚¾‚³‚¢
”ñ“¯Šú‚𓯊ú‚É‚Í‚Å‚«‚È‚¢B
‚±‚êA‰SŽÒ‚Ì ‚Íh‚©‚Á‚½‚¯‚ÇA‹C‚ª‚‚¢‚½‚犵‚ê‚Ä‚½‚µ•s•Ö‚³‚æ‚è•Ö—˜‚³‚ðŠ´‚¶‚é‚悤‚É‚È‚Á‚½‚©‚çlŠÔ‚Ì“K‰ž”\—Í‚Á‚Ä‚·‚²‚¢B
‚¤[‚ñ‚í‚©‚ç‚ñ
type X = A & { foo: string}
‚Á‚Ä‚â‚é‚ÆX‚ªany‚Æ”»’肳‚ê‚錻ۂª‹N‚«‚Ä‚ÄŒ´ˆö‚ª‘S‚‚í‚©‚ç‚È‚¢
A‚Í‚¿‚á‚ñ‚ÆŒ^‚ª”FŽ¯‚³‚ê‚Ä‚é
const a: A = { —ª }
a.
‚±‚±‚܂őłĂ΃Cƒ“ƒeƒŠƒZƒ“ƒX‚ªo‚Ä‚‚é
‚Å‚à&‚ð‹²‚Þ‚Æ‚È‚º‚©any‚É‚È‚é
ƒRƒ“ƒpƒCƒ‰‚̃oƒO‚©‚ÈH
export type X = A & { foo: string }
const x: X
‚±‚ê‚ÍŒ^‚ª¶‚«‚Ă邵ƒCƒ“ƒeƒŠƒZƒ“ƒX‚ào‚é
import { X } from ecf
const x: X
‚±‚ê‚Íany‚É‚È‚Á‚Ä‚µ‚Ü‚¤
ƒtƒ@ƒCƒ‹‚ðŒ×‚ª‚È‚¯‚ê‚΂¨k‚Ý‚½‚¢
ƒGƒNƒXƒ|[ƒg/ƒCƒ“ƒ|[ƒg‚̃vƒƒZƒX‚ŃoƒO‚é‚Ì‚©‚ÈH
‘¼‚ÌŒ^‚Í–â‘èo‚Ä‚È‚¢‚©‚çA‚¾‚¯‚ª“ÁŽê‚È‚ñ‚¾‚낤‚¯‚Ç•¶Žš—ñŒ^‚̃tƒB[ƒ‹ƒhŠô‚‚©Ž‚Á‚Ă邾‚¯‚Ì‚È‚ñ‚Ì•Ï“N‚à‚È‚¢Œ^‚È‚ñ‚¾‚æ‚Èc
FX’²‚ׂÄs‚«‹l‚Ü‚Á‚½‚ñ‚¾‚¯‚Ç‚±‚ê‚Ň‚Á‚Ä‚éH
babel‚Ìpreset-typescript‚ÍTS‚©‚çŒ`î•ñ‚ð—Ž‚Æ‚µ‚Ă邾‚¯
‚È‚Ì‚Åtsconfig‚𖳎‹‚·‚é
‚È‚Ì‚Åproject references‚à–³Ž‹‚³‚ê‚é
ƒvƒƒWƒFƒNƒg•ªŠ„‚µ‚½‚¢ê‡‚̃IƒtƒBƒVƒƒƒ‹‚ÈŽè’i‚ª‚È‚¢
‚Ȃ̂ŃvƒƒWƒFƒNƒg•ªŠ„‚µ‚½‚¯‚ê‚ΊeŽ©D‚«‚È•û–@‚ŃnƒbƒN‚·‚邵‚©‚È‚¢
Žb’è‘Ήž‚Æ‚µ‚Ä”íŽQÆ‘¤‚̃vƒƒWƒFƒNƒg‚Åwatch & build‚ðŽdŠ|‚¯‚Ä
babel‘¤‚̃vƒƒWƒFƒNƒg‚©‚ç”íŽQÆ‘¤‚Ìo—̓tƒHƒ‹ƒ_‚ðimport‚µ‚Ä‚é‚ñ‚¾‚¯‚dz’¼h‚¢‚à‚Ì‚ª‚ ‚é
babel ‚ª‚Ç‚¤“®‚‚©‚È‚ñ‚Ä tsc ‚É‚ÍŠÖŒW‚È‚¢‚¾‚ë
‚»‚ê‚Æ‚à‚ ‚È‚½‚̃GƒfƒBƒ^‚Í babel ‚ÅŒ^î•ñ‚ð‰ðÍ‚µ‚Ä‚¢‚é‚Ì‚©H
ƒRƒ“ƒpƒCƒ‹Ï‚݂̃tƒ@ƒCƒ‹‚ÉŒ^î•ñ‚ª‚È‚¢‚Æ‚¢‚¤˜b‚È‚çAŒ^’è‹`ƒtƒ@ƒCƒ‹(.d.ts)‚ào—Í‚µ‚È‚¢‚Æ‚»‚è‚á‚»‚¤‚¾‚ë‚Æ
ƒvƒƒWƒFƒNƒg•ªŠ„‚ɂ‚¢‚Ä‚Í‚Ç‚¤l‚¦‚Ü‚·‚©H
î•ñ‚ð¬o‚µ‚É‚¹‚¸A–â‘肪Č»‚·‚郊ƒ|ƒWƒgƒŠŠÛ‚²‚Æã‚°‚é‚©‚¹‚߂ătƒ@ƒCƒ‹\‘¢‚âŠeŽíÝ’èƒtƒ@ƒCƒ‹‚Ì“à—e‚È‚Ç‘S•”‘‚«o‚µ‚Ä
& ‚ªƒ_ƒ‚È‚Ì‚©ƒtƒ@ƒCƒ‹‚ðŒ×‚®‚Ì‚ªƒ_ƒ‚È‚Ì‚©ƒvƒƒWƒFƒNƒg•ªŠ„‚ªƒ_ƒ‚È‚Ì‚©˜b‚ª‚Ç‚ñ‚Ç‚ñˆÚ‚Á‚Ä‚Ä‚í‚©‚ç‚ñ‚¼
‚±‚ê•Êl‚̕ʂ̘b‚©c‚»‚¤‚¾‚Á‚½‚çƒXƒ}ƒ“
•Ê‚Å‚·‚Ë
’P“’¼“ü‚ÉŒ¾‚¤‚Æbabel & preset -typescriptŠÂ‹«‚ų‚µ‚¢ƒvƒƒWƒFƒNƒg•ªŠ„‚Ì‚µ‚©‚½‚ð•·‚«‚½‚©‚Á‚½
FX‚ÆŽŽ‚µ‚ÄŒ‹˜_‚ªo‚½
ƒvƒƒWƒFƒNƒgŽQÆ‚Í’ú‚߂ăVƒ“ƒvƒ‹‚É‘Š‘΃pƒX‚Åimport‚·‚邱‚Æ‚É‚µ‚½
ˆË‘¶ƒpƒbƒP[ƒW‚ð‘S‚ẴvƒƒWƒFƒNƒg‚É“ü‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Ì‚ª–Ê“|‚¾‚¯‚Ǒ˦
‚悤‚·‚é‚ÉÌVB6‚âCŒ¾Œê‚È‚Ç‚Å‚æ‚‚â‚Á‚Ä‚½DLL‰»‚¹‚¸‚ɃR[ƒhƒtƒ@ƒCƒ‹‚ð‹¤—L‚·‚éƒXƒ^ƒCƒ‹
ƒ‚ƒ_ƒ“‚ÈŒ¾Œê‚Å‚â‚邱‚Æ‚Æ‚ÍŽv‚¦‚È‚¢‚¯‚lj½“ú‚à’²‚ׂĂł«‚È‚¢‚È‚çŽd•û‚È‚¢
‚Å‚àƒtƒŒ[ƒ€ƒ[ƒN‚ªƒoƒx‚ê‚Á‚ÄŒ¾‚¤‚ñ‚Å‚·
‚±‚ê‚ð
babel_proj
webpack_proj
tsc_proj
@tsconfig.json
tsc_lib_1
@tsconfig.json
tsc_lib_2
@tsconfig.json
‚±‚¤‚·‚é
babel_proj
@symlink => ../libs
webpack_proj
@symlink => ../libs
tsc_proj
@tsconfig.json
@symlink => ../libs
libs
@lib_1
@lib_2
ƒoƒbƒNƒGƒ“ƒh‚Íexpressˆê‘ðH
nestjs‚̓ŒƒKƒV[‚ȃfƒRƒŒ[ƒ^ˆË‘¶‚ª‚È‚
‚»‚à‚»‚àƒT[ƒo[ƒTƒCƒh‚ÉTS‘I‚ÔƒƒŠƒbƒg‚ª–³‚¢
JavaScript‚ª‚Á‚Ęb‚È‚ç‚í‚©‚ç‚ñ‚Å‚à‚È‚¢‚ª
TSŽn‚ß‚½Žž‚©‚炸‚Á‚ÆŽv‚Á‚Ä‚½‚¯‚ÇŒ^‚ªŠÈ’P‚ɉR‚ð•t‚¯‚錾ŒêŽd—l‚̓oƒbƒNƒGƒ“ƒh‚Å‚Í“ž’êŽó‚¯“ü‚ê‚ç‚ê‚ñ‚í
ƒtƒƒ“ƒgƒGƒ“ƒh‚Å‚Í‹CŠy‚³‚Ɖó‚ê‚â‚·‚³‚̃gƒŒ[ƒhƒIƒt‚Á‚Ä‚±‚ƂŎ󂯓ü‚ê‚邯‚Ç
‚¶‚á‚ C/C++‚È‚ñ‚©‚àƒ_ƒ‚¾‚È
ƒoƒŠƒf[ƒVƒ‡ƒ“‚à‚Å‚«‚È‚¢“z‚ª‚È‚ñ‚©Œ¾‚Á‚Ä‚ç
‚»‚¤‚¾‚Ë
ƒoƒbƒNƒGƒ“ƒh‚Å‚ÍŽÀŽ¿C‚Æ‘å·‚È‚¢
‚¿‚å‚Á‚Æ‚¾‚¯Šy‚Å‚«‚邯‚Ç
‚¶‚á‚ ‹t‚ɃoƒbƒNƒGƒ“ƒh‚Ŏ󂯓ü‚ê‚ç‚ê‚錾Œê‚Á‚Ä‚È‚ñ‚¾‚낤HJava‚Æ‚©Rust‚‚ç‚¢H
Java‚ÆC#‚¾‚Ë
Œ^ˆÀ‘S«‚ª‚µ‚Á‚©‚肵‚Ä‚ÄŽÀÑ‚à‘½‚¢Œ¾Œê‚Á‚ÄŒ¾‚¦‚΂»‚ê‚®‚ç‚¢‚¶‚á‚È‚¢‚©H
‚ñ[A‚‚܂è
>TSŽn‚ß‚½Žž‚©‚炸‚Á‚ÆŽv‚Á‚Ä‚½‚¯‚ÇŒ^‚ªŠÈ’P‚ɉR‚ð•t‚¯‚錾ŒêŽd—l‚̓oƒbƒNƒGƒ“ƒh‚Å‚Í“ž’êŽó‚¯“ü‚ê‚ç‚ê‚ñ‚í
Java‚ÆC#ˆÈŠO‚ÌŒ¾Œê‚ðG‚邽‚Ñ‚É“¯‚¶‚悤‚ÉŽv‚Á‚½‚Á‚Ä‚±‚Æ‚Å‚¢‚¢‚Ì‚©‚ÈH
Cò‚âJava‚æ‚è‚ÍTypeScript‚âRust‘I‚Ñ‚Ü‚·‚í
‚Ü‚é‚ÅTypeScript‚âRust‚ð‘I‚ԂƃoƒO‚ªo‚é‚©‚̂悤‚È•¨Œ¾‚¢‚¾‚ª
C#‚âJava‚ð‘I‚ׂ΃oƒO‚ªo‚È‚¢‚Æ‚¢‚¤‚킯‚Å‚à‚ ‚é‚È‚¢
TypeScript‚ÍŒ^‚ªŠÈ’P‚ɉR‚ð‚‚¯‚é‚̂ŃoƒO‚ªo‚â‚·‚¢
Œ^ˆÀ‘S«‚ªƒoƒO팸‚ÉvŒ£‚µ‚Ä‚¢‚é‚̂̓vƒƒOƒ‰ƒ}‚Ì펯
‚»‚ê‚Í‚ ‚È‚½‚ªƒoƒŠƒf[ƒVƒ‡ƒ“‘‚¯‚È‚¢‚©‚ç‚Å‚µ‚åH
>>962
‹ï‘Ì“I‚É‚Ç‚¤‚¢‚¤‚Ì‚ðŒ¾‚Á‚Ä‚¢‚éH‚Ü‚³‚©ŒÌˆÓ‚Éas‚ŃLƒƒƒXƒg‚µ‚½ê‡‚̘b‚¶‚á‚È‚¢‚¾‚낤‚ª ‚»‚Ì•Ô“š‚Å‘‚¯‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚ª˜I’悵‚½ƒ]
>>963
Œ^‚ª‰R‚ð‚‚¯‚邱‚ƂƃoƒŠƒf[ƒVƒ‡ƒ“‚Í•ÊŽŸŒ³‚̘b
>>964
–¾Ž¦“IƒLƒƒƒXƒg‚È‚ñ‚©‚µ‚È‚‚Ä‚àTS‚É‚Í‚¢‚‚ç‚Å‚àŒ^‚ª‰R‚ð‚‚㩂ª‚ ‚é
‘ã•\“I‚È‚Æ‚±‚낾‚Æjson‚̃p[ƒXADB‚ÌI/OAapi I/OA–ì—ǃ‰ƒCƒuƒ‰ƒŠ‚ÌI/OAAA Œ¾ŒêŽd—l‚ð•Ï‚¦‚é‚ׂ«‚È‚ñ‚¾‚낤‚È
type‚Å錾‚µ‚½•Ï”‚Ö‚Ì‘ã“ü‚ÍŽÀsŽž‚ÉŒ^ƒ`ƒFƒbƒN•t‚«‚̃}ƒbƒsƒ“ƒO‚Ƀgƒ‰ƒ“ƒXƒŒ[ƒg‚·‚ׂ«
‚‚¢‚Å‚ÉŒ¾‚¤‚Ætype‚Å–¢’è‹`‚Ì‘®«‚̓}ƒbƒsƒ“ƒO‚·‚é‚Æ‚«‚Éundefined‚É‚·‚ׂ«
‚±‚ꂾ‚¯‚ÅTypeScript‚É‚æ‚‚ ‚é”nŽ”nŽ‚µ‚¢ƒoƒO‚ª‚©‚Ȃ茸‚é‚Í‚¸‚¾
type Foo {
x: string;
y: number; }
const foo: Foo = { y: gsh } as any
‚±‚ê‚̓Rƒ“ƒpƒCƒ‹Žž‚É‚Í–³Ž‹‚µ‚Ä‚¢‚¢‚ªŽÀsŽž‚ɂ̓Gƒ‰[‚É‚È‚é‚ׂ«‚¾‚µ
const foo2: Foo = { x: gah, y: 100, z: g111h }
‚±‚ê‚Íz‚ÍÁ‚¦‚é‚ׂ«
>>967
‚¢‚â‚»‚ê‚Í‚»‚̃R[ƒh‚ªƒoƒJ‚¶‚á‚ñcc Java‚ÍÅ‚à—D‚ꂽ݌v‚Å‚»‚à‚»‚àany‚Ý‚½‚¢‚ÈŒ¾ŒêŽd—l‚ª‚È‚¢
Object‚Í’è‹`‚Å‚«‚邪ˆÃ–ق̃LƒƒƒXƒg‚ŃXƒ‹ƒb‚Æs‚‚È‚ñ‚Ä‚±‚Æ‚Í‚ ‚蓾‚È‚¢‚µ–³—‚â‚èƒLƒƒƒXƒg‚µ‚½‚Á‚ÄŽÀsŽž‚É•K‚¸—áŠO‚ª”ò‚Ô
C#‚Íany‚É‹ß‚¢‚à‚Ì‚Ådynamic‚Æ‚¢‚¤‚Ì‚ª‚ ‚邪‚±‚ê‚àŒë‚Á‚½ƒLƒƒƒXƒg‚É‚ÍŽÀsŽž‚É—áŠO‚ª”ò‚Ô
‚Ç‚¿‚ç‚àŒ^‚ª‰R‚ð‚‚©‚È‚¢‚悤‚ÉŒ¾ŒêŠî”Õ‚ª‚µ‚Á‚©‚è’S•Û‚µ‚Ä‚‚ê‚é‚©‚çŒ^‚ðM—p‚µ‚Ä‚¢‚¢
“–‚½‚è‘O‚Ì‚±‚Æ‚ð“–‚½‚è‘O‚É‚â‚Á‚Ä‚‚ê‚錘ŽÀ‚ÈŒ¾Œê‚¾
>>968
‚±‚̃R[ƒh‚Íà–¾‚Ì‚½‚߂̃Xƒjƒyƒbƒg‚¾
Œ»ŽÀ“I‚É‚±‚ñ‚ȃR[ƒh‘‚‚킯‚È‚¢‚¾‚ë
Œ»ŽÀ“I‚É‚Íæ‚É‹“‚°‚½‚悤‚È󋵂Åany‚Æí‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢ >>966
>>970
‚È‚ñ‚ׂ̈̃oƒŠƒf[ƒVƒ‡ƒ“‚ƃ^ƒCƒvƒK[ƒh‚¾‚æB
‚Ç‚±‚ÅŠÔˆá‚Á‚½Œ^‚ª“ü‚肤‚é‚©‚È‚ñ‚©•’Ê”cˆ¬‚Å‚«‚é‚Å‚µ‚傤‚É Javascript‚̃X[ƒp[ƒZƒbƒg‚Æ‚¢‚¤Å‘å‚̃Z[ƒ‹ƒXƒ|ƒCƒ“ƒg‚ðŒ©‚Ä‚È‚³‚·‚¬‚¾‚ë
\‘¢“I•”•ªŒ^‚à•Ö—˜‚¾‚µanyŒ^‚È‚ñ‚ÄŽg‚¤‚Æ‚«‚É‚ÍŒ^ƒK[ƒh‚·‚é‚æ‚Ë
Œ^‚ÉŠÖ‚µ‚Ä‚ÍJava‚æ‚èD‚«‚¾‚í
Nullable‚ð’·”N•ú’u‚µ‚Ä‚½‚蕶‰»“I‚É‚àŒ¾Œê“I‚É‚àImmutable‚ðŒyŽ‹‚µ‚Ä‚«‚½Java‚à‚¿‚å‚Á‚ÆM—p‚Å‚«‚È‚¢‚Å‚·‚Ë
>>971
ƒoƒŠƒf[ƒVƒ‡ƒ“‚Á‚Ä‚Ì‚Í’l‚ª³‚µ‚¢‚©‚Ç‚¤‚©ŒŸØ‚·‚é‚à‚Ì‚Å‚ ‚Á‚ÄŒ^‚ª‰R‚ð‚‚¢‚Ä‚¢‚é‚©‚Ç‚¤‚©’²‚ׂ邽‚ß‚Ì‚à‚Ì‚¶‚á‚È‚¢
‚Ç‚±‚ÅŒ^‚ª‰R‚ð‚‚¢‚Ä‚¢‚é‚©ŠmŽÀ‚É”»’f‚·‚邱‚Æ‚Í‚Þ‚¸‚©‚µ‚¢
Ž©•ª’B‚ÌŠÇ—‚·‚éƒR[ƒhƒx[ƒX‚ÌŠOŠE‚Æ‚ÌI/O‚Í‘S‚Ä‹^‚킵‚¢
æ‚àq‚ׂ½‚悤‚ÉJson‚̃p[ƒXAApi‚ÌIOADB‚ÌIOA–ì—ǃ‰ƒCƒuƒ‰ƒŠ‚ÌIO
‹^‚킵‚¢‰ÓŠ‚ª‘½‚·‚¬‚é
Œ^‚ª‰R‚ð‚‚©‚È‚¢Œ¾Œê‚È‚çŠOŠE‚Æ‚ÌI/O‚ÌŒ^’è‹`‚ªM—p‚Å‚«‚é
M—p‚Å‚«‚È‚¢—̈悪ƒOƒb‚ƈê‹C‚ÉŒ¸‚é
‚¾‚©‚çŒ^‚͉R‚ð‚‚¢‚¿‚á‚¢‚¯‚È‚¢‚µ
ŠÈ’P‚ɉR‚ð‚‚¯‚錾ŒêŽd—l‚Íâ‘΂ɂ¨‚©‚µ‚¢ >>972
\‘¢“I•”•ªŒ^‚à‚í‚©‚è‚É‚‚¢ƒoƒO‚̉·°‚¾‚È
any‚æ‚è‚Í‘S‘Rƒ}ƒV‚¾‚ª
‚Ü‚ Šy‚È‚Ì‚ÍŠy‚¾‚æ‚»‚ê‚Í‚í‚©‚é
‚½‚¾Šy‚Ȃ̂ƈÀ‘S‚Å‚è‚©‚¢‚µ‚â‚·‚¢‚Ì‚Æ‚Í“¯‚¶‚¶‚á‚È‚¢‚©‚ç‚Ë
type‚͉´‚ªŒ¾‚Á‚½‚悤‚È^‚̈Ӗ¡‚ÅŒ^ˆÀ‘S‚ð’S•Û‚·‚邽‚ß‚ÌŽd—l
interface‚Í\‘¢“I•”•ªŒ^‚ŃTƒ{‚邽‚ß‚ÌŽd—l
‚±‚¤Žg‚¢•ª‚¯‚ê‚΂悩‚Á‚½‚ñ‚¾‚낤‚È >>972
ƒZ[ƒ‹ƒ|ƒCƒ“ƒg‚Å‚ ‚èÅ‘å‚ÌŽã“_‚Å‚à‚ ‚é
Žv‚¢Ø‚Á‚Č݊·«Ø‚Á‚½•û‚ªâ‘ÎãŽè‚‚¢‚Á‚Ä‚½
>>973
‚Ü‚ 攂̌¢Œ¾Œê‚¾‚©‚ç‚ ‚é’ö“x‚ÍŽd•û‚È‚¢‚Ë
NullˆÀ‘S‚͑Ήž‚µ‚Ä‚«‚Ä‚é
ƒCƒ~ƒ…[ƒ^ƒuƒ‹‚ÍÌ‚©‚çŽg‚¦‚Ä‚½(final) >>974
Œ^‚³‚¦‚ ‚Á‚Ä‚è‚á‚Ç‚ñ‚ȃ‰ƒCƒuƒ‰ƒŠ‚àˆÀ‘SˆÀS‚¾‚ÆŽv‚Á‚Ä‚¢‚é‚Ì‚©cc >>977
‚¿‚á‚ñ‚Æ“Ç‚ß‚Ä‚Ü‚·H
uM—p‚Å‚«‚È‚¢—̈悪ƒOƒb‚ÆŒ¸‚év‚Á‚Ä‘‚¢‚Ä‚ ‚é‚Å‚µ‚åH
Œ^ˆÀ‘S‚Å‚ ‚ê‚ΑS‚Ä‚ªˆÀ‘S‚È‚ñ‚Ä‚±‚Æ‚Í‚È‚¢
‚±‚ê‚Í펯
‚Å‚àŒ^ˆÀ‘S‚È‚ç‚»‚¤‚Å‚È‚¢ê‡‚É”ä‚ׂđ啔•ª‚ªˆÀ‘S‚É‚È‚é
‚±‚ê‚à펯
‚»‚µ‚ÄTS‚͈ꌩ‚·‚é‚ÆŒ^ˆÀ‘S‚Å‚ ‚é‚©‚̂悤‚ÉŒ©‚¦‚邯‚ê‚Ç
Œ^‚ªŠÈ’P‚ɉR‚ð‚‚¯‚錾ŒêŽd—l‚Ì‚¹‚¢‚ÅŽÀ‚ÍŒ^ˆÀ‘S‚Å‚Í‚È‚ˆÀ‘S‚Å‚È‚¢Œ¾Œê‚Å‚ ‚é
‚±‚ꂪŽ„‚ÌŽå’£
‚æ‚“Ç‚ñ‚Å‚Ë >>966
‚ ‚ñ‚½‚ÌŒ¾‚¤uŒ^‚ª‰R‚ð‚‚v‚̈Ӗ¡‚ª‚æ‚‚í‚©‚ç‚ñ‚ªBƒIƒŒƒIƒŒ—pŒê‚¶‚á‚È‚‚Ĉê”Ê“I‚È—pŒê‚Åà–¾‚µ‚Ä‚‚ê‚ñ‚©‚ÈB
>æ‚àq‚ׂ½‚悤‚ÉJson‚̃p[ƒXAApi‚ÌIOADB‚ÌIOA–ì—ǃ‰ƒCƒuƒ‰ƒŠ‚ÌIO
>‹^‚킵‚¢‰ÓŠ‚ª‘½‚·‚¬‚é
‰R‚ð‚‚‚à‚È‚É‚àAJSON‚Í‚»‚ÌJSONŽ©‘Ì‚Ì\‘¢ˆÈã‚ÌŒ^‚ðŽå’£‚µ‚½‚è‚Í‚µ‚È‚¢‚ªB
‚»‚ê‚ðŸŽè‚É•Ê‚ÌŒ^‚ÆŒ©˜ô‚µ‚½‚Æ‚µ‚½‚ç‚»‚̃R[ƒh‚Ì•û‚É–â‘肪‚ ‚é‚킯‚¾‚낤B >>967
‚ ‚ ‚È‚é‚Ù‚ÇB
Œ^‚̇‚킹•û‚ª‚í‚©‚ç‚È‚‚Äas‚âany‚Ō떂‰»‚µ‚½‚çƒoƒO‚Á‚½‚Á‚Ä‚Ì‚Ì‹t¦‚Ý‚©B Œ^‚ª‰R‚ð‚‚‚Á‚Ä‚Ì‚Í
ƒRƒ“ƒpƒCƒ‹Žž‚ÉŽw’肵‚½Œ^ˆÈŠO‚Ì’l‚ª“ü‚Á‚Ă邱‚Æ‚ª‚ ‚é
“ü‚ê‚邱‚Æ‚ªŠÈ’P‚É‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ
type X = { foo: string }
function xxx(): X
—Ⴆ‚Ϊ‚±‚¤‚¢‚¤’è‹`‚ª‚ ‚Á‚½‚Æ‚·‚é
ŽÀÛ‚Éxxx()‚Ì–ß‚è’l‚ª•¶Žš—ñŒ^‚Ìfoo‚Æ‚¢‚¤‘®«‚ðŽ‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©H
‚»‚ê‚̓\[ƒXƒR[ƒh‚ð‹÷X‚Ü‚Å“Ç‚ñ‚ŊԈႢ‚È‚¢‚±‚Æ‚ðŠm”F‚·‚é‚Ü‚Å‚í‚©‚ç‚È‚¢
ƒR[ƒh‚ÍX‚Æ‚¢‚¤Œ^‚Ífoo‚Æ‚¢‚¤•¶Žš—ñŒ^‚Ì‘®«‚ðŽ‚Á‚Ä‚¢‚é‚ÆŽå’£‚µ‚Ä‚¢‚é‚킯‚¾‚ªŽÀÛ‚É‚Í‚»‚¤‚Å‚È‚¢ê‡‚ª‚ ‚é
‚±‚ê‚ð‰´‚ÍŒ^‚ª‰R‚ð‚‚¢‚Ä‚¢‚é‚Æ•\Œ»‚·‚é
Java‚âC#‚Å‚Í‚±‚¤‚¢‚¤Ž–‚Í‹N‚±‚ç‚È‚¢
³Šm‚ɂ͒჌ƒxƒ‹API‚Ńƒ‚ƒŠ‚ð•s³‚É‘‚«Š·‚¦‚ê‚΋N‚±‚¹‚邪–³—‚·‚ê‚΋N‚±‚¹‚È‚¢‚±‚Æ‚à‚È‚¢‚ÆŒ¾‚Á‚½’ö“x
Java‚âC#‚Å‚ÍX‚ªfoo‚Æ‚¢‚¤•¶Žš—ñŒ^‚Ì‘®«‚ðŽ‚Á‚Ä‚¢‚Äxxx‚Ì–ß‚è’l‚ÌŒ^‚ªX‚Å‚ ‚é‚Æ‘‚¢‚Ä‚ ‚Á‚½‚ç‚»‚ê‚ðM—p‚µ‚Ä‚¢‚¢
Java‚âC#‚ÍŒ^‚ª‰R‚ð‚‚©‚È‚¢‚©‚炾
>>982
H
‚¨‚ß[‚Ìtsc‚Í‚»‚êƒRƒ“ƒpƒCƒ‹ƒGƒ‰[‚É‚µ‚Ä‚‚ê‚È‚¢‚ÌH >>985
–{“–‚É’p‚¸‚©‚µ‚¢‚©‚炨‘O‚Í‚à‚¤–Ù‚Á‚Ä‚ë ‚»‚ñ‚È‚ÉTS‚ªŒ™‚¢‚Ȃ炸‚Á‚ÆJava‚È‚èCò‚È‚èŽg‚Á‚Ä‚ê‚Ηǂ¢‚¶‚á‚ñ
>>987
ƒRƒ“ƒpƒCƒ‹ƒGƒ‰[‚É‚È‚ç‚È‚¢ function xxx() ‚Ì—á‚æ‚ëB >>988
‚»‚¾‚Ë
‘I‘ðŒ ‚ª‚ ‚éƒvƒƒWƒFƒNƒg‚È‚ç•K‚¸‚»‚¤‚µ‚Ä‚é‚æ >>989
function xxx(): X {
return {
foo: bugLib.getStringValueEvil();
}
} >>991
H
bugLib.getStringValueEvil() ‚ªstring‚Æ錾‚³‚ê‚Ä‚¢‚ê‚΃Rƒ“ƒpƒCƒ‹‚ª’ʂ邯‚Ç‚»‚Á‚¿‚ª‰R‚¾‚Á‚½‚Á‚ĘbH ‚¶‚á‚ bugLib.getStringValueEvil() ‚Í‚Ç‚¤‚â‚Á‚ĉR‚ð‚‚¢‚½‚킯H“°X„‚肾‚ªB
>>994
‚³‚ ‚Ç‚¤‚¾‚낤‚ÈH
‚¾‚©‚ç>>982‚Ń\[ƒXƒR[ƒh‹÷X‚Ü‚ÅŒ©‚½‚çc‚Á‚Ä‘‚¢‚½‚ñ‚¾‚¯‚Ç‚Ë
Java‚âC#‚¾‚Á‚½‚çŒ^‚¾‚¯Œ©‚ê‚΂ ‚ ‚±‚Ì–ß‚è’l‚Ìfoo‘®«‚Í•¶Žš—ñ‚È‚ñ‚¾‚È‚ÆM—Š‚Å‚«‚é
ƒ\[ƒXƒR[ƒh‚ð‹÷X‚Ü‚ÅŒ©‚é•K—v‚Í‚È‚¢
‚È‚º‚È‚çŒ^‚ª‰R‚ð‚‚©‚È‚¢‚©‚ç‚Ë any‚È‚ñ‚©‚©‚çŒ^•ÏŠ·‚·‚éۂɃ‰ƒ“ƒ^ƒCƒ€ƒ`ƒFƒbƒN‚ð’ljÁ‚·‚éƒIƒvƒVƒ‡ƒ“‚Í‚ ‚Á‚Ä‚¢‚¢‚Æ‚ÍŽv‚¤‚ªTypeScript‚É‚Æ‚Á‚Ä‚Ìno goal‚¾‚©‚ç–³‚¢‚Ì‚àŽd•û‚È‚¢
Œ^ˆÀ‘S«‚¾‚¯‚ÉS‚é‚È‚çTypeScript‚Í“K“–‚¶‚á‚È‚¢‚Ì‚Í‚»‚ê‚Í‚»‚¤(‚»‚à‚»‚à‚ªoptional type‚Å‚µ‚©‚È‚¢)
‘¼‚Ì—v‘f‚àl—¶‚·‚ê‚ÎŒÂl“I‚ɂ͈«‚¢‘I‘ðŽˆ‚¶‚á‚È‚¢‚Ì‚ÅJavaScript‚æ‚è‚ÍTypeScript‚ð‘I‚Ô‚¯‚Ç‚à(C#‚âJava‚Æ”äŠr‚·‚é‚©‚Í–Ú“I‚É‚æ‚é)
‚悤‚ÍTypeScript‚ÉŒÀ‚炸‹‚¢Œ^•t‚¯ˆÈŠO‘S”Û’è‚Á‚Ä‚±‚Æ‚©‚Ë
>>995
‚»‚ê‚Á‚ÄŒ^Žw’è‚̃oƒO‚Ȃ킯‚ÅAƒoƒO‚ð‰ñ”ð‚·‚éˆ×‚É‘¼‚ÌŒ¾Œê‚Å‚àƒ\[ƒXƒR[ƒh‘S•”“Ç‚Þ•K—v‚ ‚é‚Ì‚Í•Ï‚í‚ç‚È‚¢‚Ì‚Å‚Ícc lud20221020033946ca
‚±‚̃XƒŒ‚ւ̌Œ胊ƒ“ƒNF http://5chb.net/r/tech/1524746903/ƒqƒ“ƒgF5chƒXƒŒ‚Ìurl‚É
http://xxxx.5ch
b.net/xxxx ‚̂悤‚É
b‚ð“ü‚ê‚邾‚¯‚Å‚±‚±‚ŃXƒŒ•Û‘¶A‰{——‚Å‚«‚Ü‚·B
TOP‚Ö TOP‚Ö @
‘SŒfŽ¦”ˆꗗ ‚±‚ÌŒfŽ¦”Â‚Ö l‹CƒXƒŒ |
Youtube “®‰æ
>50
>100
>200
>300
>500
>1000–‡
V’…‰æ‘œ
@«uTypeScript part3 v‚ðŒ©‚½l‚àŒ©‚Ä‚¢‚Ü‚·F
ETypeScript part4
ETypeScript part2
EŽŸ¢‘㌾ŒêPart8[Haskell Rust Kotlin TypeScript]
EŽŸ¢‘㌾Œê11[Rust Swift TypeScript Dart]
EŽŸ¢‘㌾Œê9[Haskell Rust Kotlin TypeScript Dart]
EŽŸ¢‘㌾Œê12 Go Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾Œê14 Go Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾Œê15 Go Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾Œê15 Go Rust Bosque Kotlin TypeScript
EŽŸ¢‘㌾Œê22 Go Nim Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾Œê29 TypeScript Swift Go Kotlin Rust Nim
EŽŸ¢‘㌾Œê28 TypeScript Swift Go Kotlin Rust Nim
EŽŸ¢‘㌾Œê24 Go Nim Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾Œê23 Go Nim Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾Œê25 TypeScript Swift Go Kotlin Rust Nim
EŽŸ¢‘㌾Œê21 Go Nim Rust Swift Kotlin TypeScript
EŽŸ¢‘㌾ŒêPart7[Go Rust Swift Kotlin TypeScript]
ECoffeeScriptA‘¼AltJS‚ÍŽ€‚ñ‚¾BTypeScriptˆÈŠO‚Í
E‚à‚¤ƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ÍTypeScript‚¾‚¯‚â‚Á‚Æ‚¯‚΂¢‚¢‚¾‚ë@‰½‚Å‚à‚Å‚«‚邵
EyƒˆŠÖ”Œ^AltJSzPureScript
EyJavaScriptz½¸ØÌßÄ ÊÞÄÙÛܲÔÙ54yphp,py,pl,rbz
EyTrading ViewzPineƒXƒNƒŠƒvƒgyPine Scriptz
EyJavaScriptz½¸ØÌßÄ ÊÞÄÙÛܲÔÙ55yphp,py,pl,rbz
EyLXz•XŽº‹ž‰î `KYOSUKE HIMURO` Part981 yPOSTSCRIPTz
EyLXz•XŽº‹ž‰î `KYOSUKE HIMURO` Part982 yPOSTSCRIPTz
EKava script
EJavaScript 4
EECMAScript ƒfƒX 4
EECMAScript ƒfƒX 6
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.127 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.123 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.131 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.134 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.124 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.129 +
EActionScript 3.0 ‚Æ‚©â‘ÎÑØ‚—‚—‚—Part2
EJavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.123
EJavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.125
E•XŽº‹ž‰î `KYOSUKE HIMURO` Part917 POSTSCRIPT
EJavaScript ƒ‰ƒCƒuƒ‰ƒŠ‘‡Ž¿–⊠vol.5
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.122 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.131 + [–³’f“]Ú‹ÖŽ~]
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.123 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.125 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.119 +
E+ JavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.129 + [–³’f“]Ú‹ÖŽ~]
EyJavaScriptŒnz NILScript yAutoHotkey•—z
EyMACROzGoogle Apps Script Ž¿–âƒXƒŒyDRIVEz
ERails6‚ÅCoffeeScript”pŽ~BŒ©‚é–Ú‚ª‚È‚©‚Á‚½l’B‚Ö
Eynode.jszƒT[ƒoƒTƒCƒhjavascript 4yio.jsz
E•XŽº‹ž‰î `KYOSUKE HIMURO` Part896 POSTSCRIPT [–³’f“]Ú‹ÖŽ~]
E•XŽº‹ž‰î `KYOSUKE HIMURO` Part906 POSTSCRIPT [–³’f“]Ú‹ÖŽ~]
Eynode.jszƒT[ƒoƒTƒCƒhjavascript 5yNashornz
ECoffeeScript
EyActiveScriptzRuby‚ðWindows‚ÅŽg‚¤ƒXƒŒyGUIz
EyPCzSniper: Ghost Warrior 3l–Ú
EJavaScript ‚ÌŽ¿–â—pƒXƒŒƒbƒh vol.126 (276)
Ejavascript‚ÅŽ¿–â
17:46:32 up 11 days, 18:50, 0 users, load average: 9.64, 9.79, 10.04
in 0.063798904418945 sec
@0.063798904418945@0b7 on 012507
|