Next.js App Routerã«ãããè¨è¨ããã¹ããã©ã¯ãã£ã¹ããçè ãªãã«ã¾ã¨ãã¾ããã
ãCloudflare Workersæ´»ç¨äºä¾ æ¥åå©ç¨ã®æ±ºãæã¨ãã®å¹æã«è¿«ãLunch LTãhttps://findy.connpass.com/event/318382/ ã§ã®çºè¡¨è³æã§ãã
ååã®è¨äºã2024å¹´ç HTMLã§ä½ããã©ã¼ã ããªãã¼ã·ã§ã³ãã§ã¯HTMLã®æ©è½ãé§ä½¿ãããã©ã¼ã ããªãã¼ã·ã§ã³ã®å®è£ ã«ã¤ãã¦è§£èª¬ãã¾ãããHTMLã®ã¿ã§ãé«æ©è½ãªãã©ã¼ã ãä½æã§ããã®ã¯è§£èª¬ããã¨ããã§ãããHTMLã«å ãã¦JavaScriptãçµã¿åããããã¨ã§ããé«æ©è½ãªãã©ã¼ã ãä½æã§ãã¾ããããã«å ãã¦ãéçºè ä½é¨ã®åä¸ãæå¾ ã§ãã¾ãã æ¬è¨äºã§ã¯3ã¤ã®ã©ã¤ãã©ãªã使ç¨ãã¦å®è·µçãªãã©ã¼ã ãä½æããæ¹æ³ã解説ãã¾ãã UIã©ã¤ãã©ãªãReactã ãã©ã¼ã åãã©ã¤ãã©ãªãReact Hook Formã åã·ã¹ãã ã¨ç¸æ§ã®è¯ãã¹ãã¼ãããªãã¼ã·ã§ã³ã©ã¤ãã©ãªãZodã ã¾ããéçåä»ãè¨èªã§ããTypeScriptããããã®ã©ã¤ãã©ãªã¨åæã«ä½¿ç¨ããå ç¢ãªãã©ã¼ã ã®å®è£ ãç®æãã¾ãã æ¬è¨äºãèªããã¨ã§ä»¥ä¸ã®ç¥èã身ã«ã¤ãã¾ãã ãã©ã¼ã ç»é¢ã®ã¦ã¼ã¶ã¼ä½é¨ï¼UXï¼ã¨ããã©ã¼ã å®
ããã«ã¡ã¯ããã¬ãã¸ã¯ã¼ã¯ã® torii ã§ãã æè¿ãããã¸ã§ã¯ãã§ä½¿ç¨ãã¦ãã TypeScript ã®åæ¤æ»ã«ãããæéã 3 å²ã»ã©ç縮ãããã¨ã«æåãã¾ããã åèã¾ã§ã«ã©ã®ããã«ããã«ããã¯ã調æ»ãã¦æ¹åã«ç¹ããã®ããæ¸ãã¦ã¿ã¾ãï¼ ãã£ãã æ¹åã®ãã£ããã¯ããã¾ãã¾ããããå¾å¾ãã¦ãã¦è¦ã¤ãã Zenn è¨äºã§ããã ï¼ç´ æ´ãããè¨äºããããã¨ããããã¾ãï¼ï¼ ãããèªãã§ãèªç¤¾ã®ãããã¯ãã§ãåæ¤æ»ã«ãããæéãç縮ã§ããã®ã§ã¯ï¼ãã¨æãç«ã¡ã試ãã¦ã¿ãã¨ããå®éã«æ¹åã«å½¹ç«ã¦ããã¨ãã§ãããã¨ããã®ããã®è¨äºã®æ¦è¦ã«ãªãã¾ãã æ¹å対象 æ¹å対象ã¯ãå¼ç¤¾ã®ã¡ã¤ã³ãããã¯ãã§ãããã¬ãã¸ã¯ã¼ã¯ã®ããã³ãã¨ã³ãã§ããç¾å¨ãã«ããããã¯ãåã«åããã³ã¼ãåå²ã«åãçµãã§ããæä¸ã§ãããå·çæç¹ã¯ã¢ããªã·ãã¯ãªæ§æã¨ãªã£ã¦ãã¾ãã æ¹ååã® TypeScript ãã¡ã¤ã«ã¯èªå
ããã«ã¡ã¯ãããã³ãã¨ã³ãã¨ã³ã¸ãã¢ã®å°å¼µã§ããGitHub Actionsã®å®è¡æéãåæ¸ããããã«åãçµãã ãã¨ã«ã¤ãã¦ç´¹ä»ãã¾ãã çµç·¯ PR TIMESã§ã¯Reactã«é¢ããã³ã¼ãããmonorepoã¨ãã¦prtimes-frontendã¨ãã1ã¤ã®ãªãã¸ããªã§ç®¡çãã¦ãã¾ãã GitHub Enterprise Cloudãã©ã³ã§ã¯æ50,000åã®GitHub Actionsãç¡æã§å®è¡ãããã¨ãã§ãã¾ãããprtimes-frontendã ãã§7å²è¿ãæéãæ¶è²»ãã¦ãã¾ã£ã¦ãã¾ãããã¾ãCIã«æéãããããã¨ã§ãPull Requestãä½æããå¾ã10åè¿ãå¾ ããªãã¨ã³ã¼ãã¬ãã¥ã¼ã«åããã¨ãã§ãããéçºå¹çãè½ã¡ã¦ãã¾ã£ã¦ãã¾ããã ããã§ç¾ç¶ã®ä½¿ãæ¹ãè¦ç´ãã¦ãbillable timeã®åæ¸ã«åãçµããã¨ã«ãªãã¾ããã billable timeåæ¸ã®æ¹åç¹ãæ¢ã b
TypeScriptã¨Documentaion tests / Documentation tests with TypeScript
ã¯ããã« ESLint v8.21.0ã®ãªãªã¼ã¹ã§ããã¾ã§ã¨ã¯ç°ãªãconfigã·ã¹ãã ï¼flat configï¼ãæã¡è¾¼ã¾ããã 以ä¸ã®éããæ°ããconfigã·ã¹ãã ã¸ã®ä¸æ©ã¨ããããã«è¨åããããESLintãå©ç¨ããä¸ã§ç¡è¦ã§ããªãå½±é¿ãåããå¤æ´ã¨ãªããããªã®ã§ãã©ã®ãããªãã®ã確èªãã¦ããããã We took a big step toward ESLintâs new config system! The new FlatESLint class is now merged. Its API is not yet stable, and not all features are implemented yet, but it is accessible via the Node.js API for early testing. See RFC9 for the origi
Matt PocockMatt is a well-regarded TypeScript expert known for his ability to demystify complex TypeScript concepts. #The Problem When you're working with React and TypeScript, you'll often encounter this kind of error:
ããã«ã¡ã¯ï¼ 2023年度ã¨ã³ã¸ãã¢æ°åã®ãåç°ã§ãã æ ªå¼ä¼ç¤¾ãªã¯ã«ã¼ã æ°åã¨ã³ã¸ãã¢ã³ã¼ã¹ã§ã¯ãé¨ç½²ã¸ã®é å±åã«ãBootCampã¨å¼ã°ããæ°äººç ä¿®ãè¡ã£ã¦ãã¾ãã æ¬æ¥ã¯2023年度ã®ç ä¿®ã®å 容ããå®éã«åè¬ããæ°åã®ç«å ´ããç´¹ä»ããã¦ããã ãã¾ãã ç ä¿®ã®å 容ã«ã¤ãã¦ã¯æ¯å¹´åé¿ãããã ãã¦ãã¾ãããä»å¹´åº¦ãä¸æ®µã¨é²åããããå å®ããç ä¿®ã§ããã ãã¼ã¸ä¸é¨ã«ç ä¿®è³æãå ¬éãã¦ãã¾ãã®ã§ããã²ç ä¿®ã®é°å²æ°ãæãåã£ã¦ããã ããã¨å¬ããã§ãã ç ä¿®ã®æ¦è¦ ã¨ã³ã¸ãã¢ã³ã¼ã¹ã®æ°äººç ä¿®ã¯ãé å±å¾ã«ã¹ãã¼ãæãæã£ã¦æé·ã§ããããã«ãªããã¨ãè¦æ®ãã ããã¾ãã¾ãªæè¡é åã®è¬åº§ãåããèå³é¢å¿ãåºãã¦ãç¥ããªãã£ã好å¥å¿ã«åºä¼ãã ãç¾å ´ã§æ±ãããããä»äºã¸ã®åãçµã¿ã¹ã¿ã³ã¹ããã¤ããã ãæ°è»½ã«ç¸è«ã§ãã仲éï¼åæï¼ãã¤ããã ã®ï¼ç¹ãç®çã¨ããã¦ãã¾ãã ä»å¹´åº¦ã¯ãå ¥ç¤¾åã«è¡ãããã¹ã
ããã«ã¡ã¯ãæ¥åå§è¨ã¨ãã¦ã³ãã¥ã¼ã³ã®ã°ãã¼ãã«ãã¼ã ã§ã¨ã³ã¸ãã¢ããã¦ããhiro08ã¨ç³ãã¾ãã ã°ãã¼ãã«ãã¼ã ã§ã¯ä¸»ã«æµ·å¤å±éã«åããéçºãæ½çãè¡ãªã£ã¦ãã¾ãããããã°ãã¼ãã«ãã¼ã ã«èå³ã®ããæ¹ã¯æ¥æ¬ã®SaaSã¹ã¿ã¼ãã¢ãããä¸çã§æ¦ãããã®ãããã¯ããéçºããã¨ãããã¨ãä¸èªãã ããã ä»åã¯ã°ãã¼ãã«ãã¼ã ã§ã®éçºã®ä¸é¨ã¨ãã¦ãTypeScript Compiler APIãæ´»ç¨ããi18nã®ä¸æ´åããã§ãã¯ãããã¼ã«ãä½æããã話ããããã¨æãã¾ãã èæ¯ æµ·å¤å±éã«åããéçºã§ã¾ãæãã¤ãã®ãi18n (å¤è¨èªå) 対å¿ã§ã¯ãªãã§ãããããã³ãã¥ã¼ã³ã®ãããã¯ãã§ã¯i18nã®å¯¾å¿ãå®äºãã¦ããããã§ã«éç¨ãã§ã¼ãºã«å ¥ã£ã¦ãã¾ãã ããããéç¨ãã¦ããä¸ã§å¯¾è¨³ãã¼ã¿ã®ãã¼ããã¼ã ã¹ãã¼ã¹ã®ä¸æ´åã«æ°ã¥ãä»çµã¿ããªããã¨ã課é¡ç¹ã¨ãã¦æãã£ã¦ãã¾ããã i18nã§ã¯ããã¼ã
ã¯ãã ãã®ããã°ãããããèªãã§ããæ¹ãªãæ¢ã«ãåç¥ããããã¾ãããããã¹ããã³ããåç¥ã§ããããã ããããåæ£åãã¤ã¯ãããã°ã®ä¸ç¨®ã§ã2017å¹´ããã®Twitter社ã«ããæ¥æ¬äººã¤ã©ã¹ãã¬ã¼ã¿ã¼ã®å¤§è¦æ¨¡åçµãããã§ä¸ææ話é¡ã«ãªãã æè¿ã¾ãã¤ã¼ãã³ãã¹ã¯ã«ããTwitter社買åããå§ã¾ã£ãä¸é£ã®æ··ä¹±ã§å度å°ã話é¡ã«ããªãã¾ããã ã§ãã¾ãåã¨ãã¦ããã¹ããã³ã«å°æ¹é ãããããã§èªåã§éç¨ãã¦ãããã§ããããã¹ããã³ã®ã³ã¼ãã¯ä»ã¨ãªã£ã¦ã¯ã ãã¶å³ããã å³ããé¨åãæããã¨å²ã¨ããªããªããã§ããããã£ããæ¸ã㨠ããã³ãã¨ã³ããWebpackerã«ã¹ã£ããããã¤ç¬èªconfigãæ¸ãã¾ãã£ã¦ãã ããã©ã«ããé è½ããã¦ããWebpackerã¨åãããæçµçã«ã©ãããconfigã§webpackerãåãã¦ãã®ããã¶ã誰ãææ¡ã§ãã¦ãªã Typescriptãããªã åãã¦ãããã¨
@captain-yossarian TypeScript blog, fully dedicated to static typings and type safety
JavaScript ã§é »åºãã undefined 㨠null ã«ã¤ãã¦èªãã¾ãã è¨èªä»æ§ä¸ã®éã JavaScript (ECMAScript) ã«ããã¦ãä»æ§ä¸ undefined 㨠null ã¯å½ç¶ãªããæ確ã«åºå¥ããã¦ãã¾ããããã¤ãè¨èªä»æ§ä¸ã®æ±ãã«ã¤ãã¦æãã¦ã¿ã¾ãã æ¯è¼ å³å¯ãªæ¯è¼æ¼ç®å === ã«ãã㦠undefined 㨠null ã¯åºå¥ããã¾ãããããæ¯è¼æ¼ç®å == ã«ããã¦ã¯ä¸¡è ã¯åºå¥ããã¾ããï¼ä»æ§ 7.2.14ï¼ã console.log(undefined === null); // false console.log(undefined == null); // true
2022å¹´4æãDeno ã«ä»¥ä¸ã®ãã°ãå ±åããã¾ããã fetch API ã使ã£ã¦ 300KB ããããããã¡ã¤ã«ãã¢ãããã¼ãããã¨ãä¸å®ç¢ºçã§ã¢ãããã¼ãããããã¡ã¤ã«ãå£ããã¨ãããã°ã®å ±åã§ãã å ±åè ã«ããã°ã1.20.6 ã¾ã§ã¯ãã°ã¯çºçãã¦ãããã1.21.0 ããçºçããããã«ãªã£ãã¨ããäºã§ãã1.20.6 ã®æ¬¡ã®ãªãªã¼ã¹ã 1.21.0 ãªã®ã§ãããããã¼ã¸ã§ã³1ååã¾ã§ããã°ã®çºçææãç¹å®ããã¦ããç¶æ ã§ãã fetch å¨ãã¯èªåã¯ã»ã¼å®è£ ãã¦ããªãã®ã§ãæ å½ç¯å²ã§ã¯ãªããæè¦ã ã£ãã®ã§ãæ®éã«ã¹ã«ã¼ãã¦ãã¾ããã èªåã«éãããDeno Land ã³ã¢ãã¼ã ã®èª°ããã® issue ã«ãã³ã¨æ¥ã人ãå± ãªãã£ãããã§ãstale ããã (æ°ã¶æé²æã®ç¡ã issue ãèªåçã«ã¯ãã¼ãºãããã¨ããããã) ã«2åãã¯ãã¼ãºããããã¦ãã¾ãããDeno ã® st
TypeScript (4.7 æç¹) ã«ããã¦, æååã«ä»ããããåã«ã¯ä»¥ä¸ã® 3 㤠(ã¨ãã®ã¦ããªã³å) ãããã¾ã. æååå string æååãªãã©ã«å ("foo" ãªã©) ãã³ãã¬ã¼ããªãã©ã«å (`data-${string}` ãªã©) ãããã®ãã¡, å®è¡æã®å ¥å, ç¹ã«äºåã«ãã¿ã¼ã³ãæ³å®ããã¦ããªããããªä»»æã®å ¥åãå«ã¾ãããããªæååã«å¯¾ãã¦ã¯, string ã string ãå«ããã³ãã¬ã¼ããªãã©ã«åãä»ãããã¨ã¯ã§ãã¦ã, æååãªãã©ã«åãä»ãããã¨ã¯ã§ãã¾ãã. æååãªãã©ã«åãä»ããããã«ã¯åæ¤æ»æ (å®è¡ã®å) ã«å ¥åæååã®å 容ãããã£ã¦ããå¿ è¦ãããã®ã§, ã¾ãããã¯ããã§ãã. ãã®ãã¨ãå©ç¨ãã¦, å®è¡æã®å ¥åãå«ãæååãä¸ãããã¨ããã¨åæ¤æ»ã«å¤±æãããããªé¢æ°ãä½ããã¨ãã§ãããã§ã. ã¾ãã¯ä¸ããããåãæååãªãã©ã«å, ã¾
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}