TSKaigi 2024 ã®ã¹ã©ã¤ãã§ã
TSKaigi 2024 ã®ã¹ã©ã¤ãã§ã
2022å¹´10æ1æ¥ã«éå¬ããã #postdev ã§ã®çºè¡¨ã§ã
React v19 RCæç¹ã§ã MutableRefObject ã®å»æ¢ã¨ RefObject ã¸ã®ä¸æ¬åãããã©ã«ãã§mutableã«ãªããã¨ãæ¡å ããã¦ãã¾ããç¶å ±ã«æ³¨æãã¦ãã ããã TypeScriptç°å¢ã§ã®Reactã® useRef ã¯ãåæå¤ã¨å弿°ã®ä¸ãæ¹ã«ãã£ã¦è¿ãå¤ã®åã RefObject 㨠MutableRefObject ã®ã©ã¡ããã«ãªãã¾ããã©ãããä½¿ãæ¹ã®ã¨ãã«ã©ãæ¸ãã¦ã©ã¡ããå¾ãã¹ãããã @types/react ã®æ´æ°ã¾ããã®è°è«ã追ã£ãçµæã示ãã¾ãã ãã®è¨äºã¯2021å¹´5æç¾å¨ãReact 17.0.2ãææ°ãã¼ã¸ã§ã³ã®æç¹ã§è¨è¿°ãã¾ãã åèã«ããæ å ± https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-446425911 RefObjec
TypeScript/JavaScriptã®è¨èªææ³çã«ã¯try/catchã使ã£ã¦error handlingãããã®ãæ®é
ãã®æ¬ã¯ããã«ã¼ããªã¼æ¬ã® 8 ç« ããã¤ã³ã¹ãã¤ã¢ããã¦ã TS ã®åãç¤ºãæ å ±ãã Promise ã¨ãããã®ãçè§£ãã¦ã¿ããã¨ããã¢ããã¼ãã§æ¸ããJSã®éåæå¦çã®è§£èª¬ã§ãã ãããã®è³æã¨åããã¦èªããã¨ãæ¨å¥¨ãã¾ãã JSã®ã¤ãã³ãã«ã¼ãã®ã¤ã¡ã¼ã¸ãæ´ã JSã§ã¯ä¸ã æèãããã¨ãå°ãªãã§ãããæ£ããçè§£ããã«ã¯ OS ã¬ãã«ã®ã¹ã¬ããã®è¦ç¹ã§èãå§ããå¿ è¦ãããã¾ãã ãã©ã¦ã¶ã Node.js ã§ã¯ä¸ã¤ã®ã¹ã¯ãªããå®è¡åä½ã1ã¤ã®ã¹ã¬ããã«å²ãå½ã¦ã¾ãããããã¡ã¤ã³ã¹ã¬ããã¨å¼ãã ãããã©ã¦ã¶ã ã£ãã UI ã¹ã¬ããã¨å¼ãã ããã¾ãã ä¾ãã°ãã©ã¦ã¶ã§ã¯ãããã¯ç§é60åãã¤ã¾ã 16.6ms ãã¨ã«ã«ã¼ããå¼ã³åºãã¾ãã(node ã ã£ããããããã£ã¨çãã§ã) 仮㫠setTimeout ã®å®è£ ããªãã£ãã¨ãã¦ãããç¸å½ã®æ¬ä¼¼ã³ã¼ããæ¸ãã®ã試ã¿ã¾ãã let handl
ãè¯ãã³ã¼ããã¨ã¯ä½ã§ããããï¼ãã³ã¼ãã®å質ã«ã¯è²ã ãªææ¨ãããã¾ããããèªã¿ãããã³ã¼ãã¯è¯ãã³ã¼ãã§ãããã¨ããã®ã¯ä¸ã¤ã®ææ¨ã¨ãã¦å¤ãã®æ¹ãèªããã¨ããã§ã¯ãªãã§ãããããããããã§ã¯èªã¿ãããã³ã¼ãã¨ã¯ã©ã®ãããªã³ã¼ããã¨ããã®ããªããªãé£ããåé¡ã§ãã ãã®è¨äºã§ã¯ãå質ã®è¯ãã³ã¼ãã¨ãã¦ã®ãèªã¿ãããã³ã¼ããã«å¯¾ããçè ã®èãæ¹ãå ±æãã¾ãããã¡ãããããå¯ä¸è§£ã ã¨ä¸»å¼µããã¤ããã¯ããã¾ããããåèã«ãªã£ãã»å ±æããã¨ããæ¹ã¯ãã²ãã®è¨äºãå¨ãã«æãã¦ããã¦ãã ããã ãªãããµã³ãã«ã³ã¼ãã¯TypeScriptã使ã£ã¦ç¤ºãã¾ãããå¿ è¦ã«å¿ãã¦èª¬æããã®ã§TypeScriptã®çµé¨ãç¡ãæ¹ã§ãèªããã¨ãã§ãã¾ãã çãã¾ã¨ã èªã¿ãããã³ã¼ãã¨ã¯ãæ¸ãæã®æå³ãä¼ãããããã³ã¼ãã§ãã æ¸ãæã®æå³ãèªã¿æã«ä¼ããã«ã¯ãèªã¿æã«æå³ãæ¨è«ãã¦ãããããã®ãã³ããæ®ãã¾ãã è¤æ°
ã¯ããã« ããã«ã¡ã¯ãã¬ãããã¯éçºé¨ã®æ²³æã§ãã ç§ã¯ã¬ãããã¯å種ã¡ãã£ã¢ã®ãªãã¬ã¤ã¹ãæ å½ãã¦ãããããã¯ã¨ã³ããä¸å¿ã«ãã«ã¹ã¿ãã¯éçºãè¡ã£ã¦ãã¾ãã ä»åã¯ç®¡çç»é¢ã®ãªãªã¼ã¹ã§æ¡ç¨ããããã«ã¹ã¿ãã¯ãã¬ã¼ã ã¯ã¼ã¯ã§ããfrourioã«ã¤ãã¦ãfrourioãæ¡ç¨ããçç±ã使ã£ã¦ã¿ã¦è¯ãã£ããã¨ãå°ã£ããã¨ãç´¹ä»ãã¾ãã ãã®è¨äºãéãã¦ãfrourioã®ã¡ãªããããã¡ãªããã ãã§ãªããã¬ãããã¯éçºé¨ã§ã¯ã©ã®ãããªèæ¯ã®ãã¨ãæè¡ã»ã¢ã¼ããã¯ãã£ã®é¸å®ãè¡ã£ã¦ããã®ããã©ããããã®ã¹ãã¼ãæã§éçºãè¡ã£ã¦ããã®ãããä¼ãã§ããã°ã¨æãã¾ãã ãªãããã®è¨äºã§ã¯frourioã«ãããç°å¢æ§ç¯ãä½¿ãæ¹çã®èª¬æã¯å²æããã¦ããã ãã¾ãã éçºèæ¯ã»çµç·¯ ä»åãéçºãã対象ã¨ãªã£ã管çç»é¢ã¯ãã¬ãããã¯ã®åã¡ãã£ã¢ã§éç¨ããè¨äºãã»ããã¼æ å ±ãã¨ã³ããªã¼æ å ±ã管çãããã®ã«ãªãã¾ãã ã
/* eslint-disable */ export type ApiResponse = { code: number type: string message: string } export type Category = { id: number name: string } export type Pet = { id?: number category?: Category name: string photoUrls: string[] tags?: Tag[] status?: 'available' | 'pending' | 'sold' } export type Tag = { id: number name: string } export type Order = { id: number petId: number quantity: number ship
ãã®è¨äºã¯ãã¯ã½ã¢ããªAdvent Calendar2021ã®20æ¥ç®(ããã«ã«æé)ã®è¨äºã§ããã¨åæã«ãGMOãããã¨ã³ã¸ã㢠Advent Calendar 2021ã®21æ¥ç®(æ¥æ¬æé)ã®è¨äºã§ãããã¾ãã ã¿ãªãããTypeScript使ã£ã¦ã¾ããï¼TypeScriptã¯JavaScriptã®ä¸çã«ç§©åºãããããç´ æ´ãããè¨èªã§ããã ãããä¸çã«ã¯å ã®ç§©åºã ãã§ãªãéã®æ··æ²ãå¿ è¦ã§ãã ã¨ãã訳ã§ãJavaScriptã«éã®æ··æ²ãããããæ°è¨èªãä½ã£ã¦ã¿ã¾ããã ãã®åããTypoScriptãã§ãã TypoScript is ä½ TypoScriptã¨ã¯ä½ããã¾ãã¯ãã¡ãã®ã³ã¼ããã覧ãã ããã function fizz_buzz(count) { for (var i = 1; i <= caunt; i++) { if (i % 3 === 0 && i % 5 ==
ç¾ç¶ / èª²é¡ APIãå¢ãã¦ããã®ã§ããã¥ã¡ã³ãåããã ã¾ãTypeScript ãå°å ¥ããã®ã§ãapi ã¬ã¹ãã³ã¹ Type ãçæããã Type ãæåã§æ¸ããªã ããã¥ã¡ã³ãã® schema ããçæãããæ¥½ãã ããã¯ã¨ã³ã㯠Rspec ããã¦ããã®ã§èªåã§ schema çæ â¨ schema ãã type çæããã°ããã®ã§ã¯ï¼ ããæãã®åãçæãããªããèªåçæ schema ã®éçãããï¼ ãããããã£ã¨è¯ãéçºããã¼ & ããæãã®ããã¼ç§»è¡æ¹æ³ããããï¼ä»ãã
ããã«ã¡ã¯ãSmartHR ã§ããã³ãã¨ã³ãéçºãæ å½ãã¦ãã @Tokky0425 ã§ãã ãã®è¨äºã§ã¯ãç§ã®ãããã¯ãã§ã® OpenAPI Generator ã使ã£ãããã³ãã¨ã³ãéçºã®åãçµã¿ãç´¹ä»ãã¦ããã¾ãã ç®æ¬¡ OpenAPI ã¨ã¯ ãã©ã¯ã©ã¯åæã¬ãã¼ããã® DX ä¸ã®èª²é¡ OpenAPI Generator ã¨ã¯ å®éã« generate ãã¦ã¿ã çæãã¡ã¤ã«ã使ã£ã¦ã¿ã åæ å ±ãåºåãã¦ã¿ã çµã¿è¾¼ã¿ã»éç¨ã®å·¥å¤« chokidar ã§ç£è¦ãã lint-staged ã«çµã¿è¾¼ã ã¡ãªããã»ãã¡ãªãã ã¡ãªãã ãã¡ãªãã ã¾ã¨ã OpenAPI ã¨ã¯ OpenAPI ã¨ã¯ããREST API ã®ããã¥ã¡ã³ãã®è¨è¿°å½¢å¼ãå®ãã仿§ãã®ãã¨ãæãã¦ãã¾ãã ç°¡åãªä¾ã§ãããä¸è¨ã®ãã㪠YAML ãã¡ã¤ã«ãããã¨ãã¾ãã schema.yml paths: "/some
TypeScriptã®ä¸çãç¥ã 忏ã Node.jsã¨ã³ã·ã¹ãã ãä½é¨ããã TypeScriptã®æ¸ãæ¹ å¤æ° ããªããã£ãå è¤åå åºæ¬çãªæ§æ åºæ¬çãªåä»ã 颿° ãã®ä»ã®çµã¿è¾¼ã¿åã»é¢æ° ã¯ã©ã¹ éåæå¦ç ä¾å¤å¦ç TypeScriptã®ä¾å¤å¦çæ§æ Error ã¯ã©ã¹ æ¨æºã®ä¾å¤ã¯ã©ã¹ ä¾å¤å¦çã¨ã³ã¼ãã®èªã¿ããã try ç¯ã¯ãªãã¹ãçããã Error 以å¤ã throw ããªã ãªã«ããªã¼å¦çã®åå²ã®ããã«ã¦ã¼ã¶ã¼å®ç¾©ã®ä¾å¤ã¯ã©ã¹ãä½ã ä¾å¤å¦çã使ããªãã¨ã©ã¼å¦ç éåæã¨ä¾å¤å¦ç ä¾å¤ã¨ã¨ã©ã¼ã®éã ä¾å¤å¦çã®ãã³ããªã³ã°ã®æ¼ã ä¾å¤å¦çæ©æ§ä»¥å¤ã§ä¾å¤ãæ±ã ã¾ã¨ã ã¢ã¸ã¥ã¼ã« console.logã«ãããã°åºå ä¸ç´ã®ãã¯ãã㯠ã¸ã§ããªã¯ã¹ 颿°åæåã®ããã°ã©ãã³ã° ã¯ã©ã¹ä¸ç´ç·¨ ãªã¢ã¯ãã£ã é«åº¦ãªãã¯ãã㯠ç°å¢ãã¨ã®Tipsï¼å ±éç°å¢ã»ãã©ã¦ã¶ä»¥
ããã«ã¡ã¯ãããã³ãã¨ã³ãã¨ãã¹ãã¼ããã¼ã ã® @koba04 ã§ãã æ¬è¨äºã§ã¯ãkintone ã® REST API ã使ãããã®ã¯ã©ã¤ã¢ã³ãã§ãã @kintone/rest-api-client (ä»¥ä¸ rest-api-client) ã®æ§æã工夫ããç¹ã«ã¤ãã¦ç´¹ä»ãã¾ãã æ¬è¨äºã¯ rest-api-client ã® 1.6.0 ã®ãã¼ã¸ã§ã³ã«åºã¥ãã¦ãã¾ãã @kintone/rest-api-client ã¨ã¯ rest-api-client ã¨ã¯ãkintone ãæä¾ãã REST API ãå©ç¨ããããã®ã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãªã§ãã GitHub ä¸ã¯ kintone/js-sdk ã® Monorepo ã® 1 ããã±ã¼ã¸ã¨ãã¦éçºããã¦ãã¾ãã kintone/js-sdk ã§ã® Monorepo éçºã«ã¤ãã¦ã¯ä¸è¨ã®è¨äºãåç §ãã¦ãã ããã https://blo
TypeScriptã«ã¯Type infer in ConditionalTypeã¨ããä¾¿å©æ©è½ãããããããå©ç¨ããã¨æ¢åã®åå®ç¾©ããæè»ã«ç¹å®ã®æ¹ãåãåºããã¨ãã§ãã¾ãã ããã¦å©ç¨é »åº¦ãé«ãããªãã®ã«ã¤ãã¦ã¯çµã¿è¾¼ã¿ã®åå®ç¾©ãããã¤ãåå¨ãã¾ãã 颿°ã®åå®ç¾©ãã弿°ãåãåºãã®ã¯ Parameters<T> ã§ããã®å弿°ã«é¢æ°ã®å®ç¾©ãä¸ãããã¨ã§ãã®é¢æ°ã®å¼æ°ãTupleã¨ãã¦è¿ã£ã¦ãã¾ãã ã¡ãªã¿ã«è¿ãå¤ã¯ ReturnType<T> ã§åãåºããã¨ãåºæ¥ã¾ãã function testFunc(a: string, b: number, c: boolean): {a: string, b: number, c: boolean} { return {a, b, c}; } type TestFuncArgs = Parameters<typeof testFunc>;
Compiler API ã§ yaml ããåãèªåçæãã ãã®è¨äºã¯ TypeScript Compiler API ãå®éã«ä½¿ã£ã¦ TypeScript ã®åãèªåçæããæ¹æ³ãç´¹ä»ãã¦ãã¾ãã è¨äºå ã§ã¯ Google Analytics ã®ã¤ãã³ãã®åã®èªåçæã«ãã©ã¤ãã¦ãã¾ãã 顿ã¨ã㦠GA ãé¸ãã ã®ã¯ã以å Next.js ã« Google Analyticsï¼GAï¼ ãå°å ¥ããæ¹æ³ãç´¹ä»ããè¨äºã§GA ã®ã¤ãã³ãã§ä½¿ãåã yaml ããèªåçæããã®ã¯ã©ãã ã¨æ¸ãã¦ããããã§ãã æ£ç´ãªã¨ãããGA ã®ã¤ãã³ãã«é¦´æã¿ã®ãªãæ¹ãããã£ãããã¨æãã®ã§ãæåã¯ãã£ã¨ä¸è¬çãªä¾ã«ãããããªã¨ãèãã¾ããã ããããä¸è¬çãªãã¨ãä¾ã«æããã¨ããµã¼ãã便å©ã ããã¨ããææ³ã§çµãã£ã¦ãã¾ããæ¥åã§èªåã使ããããªã¤ã¡ã¼ã¸ãæ¹§ããªããããããªãã¨èãã¾ããã ããã§ããã
ã¯ããã« Dwango ã§ãã³ãã³çæ¾éã®ããã³ãéçºãæ å½ãã¦ãã misuken ã§ãã TypeScript ã§ React.forwardRef ãç°¡æ½ã«æ¸ãæ¹æ³ãç´¹ä»ãã¾ãã React ã§ã¯ Hooks ãç»å ´ãã¦ä»¥æ¥ã颿°ã³ã³ãã¼ãã³ãã主æµã¨ãªãã forwardRef ã使ç¨ããæ©ä¼ãå¢ãã¦ããã®ã§ã¯ãªãã§ããããã ãããªèº«è¿ãª forwardRef ã§ããã以ä¸ã®ãããªåé¡ã«æ©ã¾ããã¦ããæ¹ãå°ãªããªãã¯ãã§ãã åã®æ¸¡ãæ¹ãããããããªã åã®æ¸¡ãæ¹ãé¢åããã ãã¾ã«åãéããªãã¨ãããã ãããªãã¨ãæããªãã使ã£ã¦ãããããã®è¨äºãåèã«ãã¦ã¿ã¦ãã ããã æéã®ç¡ãæ¹ã react-frec ã使ãã¨ã forwardRef å¨ããã·ã³ãã«ã«æ¸ãã¾ããã¨ããã話ã§ãã forwardRef ã®æ¸ãæ¹ã«æºè¶³ãã¦ãã¾ããï¼ forwardRef ã®åãã©ã¡ã¼ã¿ã«
ããã«ã¡ã¯ãããæ°æ¥ã¯ã以ä¸ã®è¨äºã話é¡ã«ãªãã¾ããã named exportã¯æå®³ã ã¨èãããã¾ããnamed exportã¯æå®³ãã¨ãã主張ã¯ããã¾ã§å¸¸èã¨æããã¦ãããã¨ã¨ã¯ç°ãªããããçéã®ã¨ã³ã¸ãã¢ããã¯å¦å®çã»æççãªæè¦ãè¦ããã¾ããå®éãçè ãnamed exportãæå®³ã§ããã¨ã¯1ããªã°ã©ã ãæã£ã¦ãã¾ããã ããããèªåã¨ç°ãªãæè¦ã¯å½ç¶ã«ä¸çã»å¹¼ç¨ãªãã®ã§ããã¨ããã®ã¯çè ãæãå«ãèãæ¹ã§ãããããã®ãããªç°ãªãæè¦ãåæã»çè§£ããå¿ è¦ãããã¨æããã¢ã³ãµã¼è¨äºã¨ããå½¢ã§ã¾ã¨ãã¾ãããå ·ä½çã«ã¯ãç°ãªãæè¦ã«éããçç±ã¨ãã¦ã¯åæãç°ãªããã¨ã¨è«çãç°ãªããã¨ãä¸»ã«æãããã¾ããåæãç°ãªããã¨ãåããã°ãèªåã¨ç°ãªãæè¦ã«è³ã£ãçç±ãçè§£ã§ããå ´åã«ãã£ã¦ã¯åãå ¥ãããã¨ãã§ãã¾ããè«çãéãã®ã§ããã°ãããã¯ççµã§ããææããªããã°ããã¾ããã ãªããããã
ãã¤ã¯ã©ã¹æ±äººTOPITè¨äºä¸è¦§ãããã°ããªãTypeScriptãã®ããã®ç¾å®çãªè¨å®ãèãã â 4ã¬ãã«ã®å³ããã使ãåãã¦TypeScriptç²ããå æãããï¼ ãããã°ããªãTypeScriptãã®ããã®ç¾å®çãªè¨å®ãèãã â 4ã¬ãã«ã®å³ããã使ãåãã¦TypeScriptç²ããå æãããï¼ ã¨ã³ã¸ãã¢Hubã§ã¯2019å¹´ã«ãããã°ããªãTypeScriptããç´¹ä»ãã¾ãããJavaScriptã«éçåä»ããªã©ãæä¾ããTypeScriptã¯ãä»ã§ã¯å®ããã¸ã§ã¯ãã«æ¡ç¨ãããããã°ã©ãã³ã°è¨èªã«ãªã£ã¦ãã¾ããããã§ç¾å®çãªTypeScriptã®è¨å®ããè¤å¾éï¼gfxï¼ããã«è§£èª¬ãã¦ãããã¾ããã 2021å¹´ã®ç¾å¨ãTypeScriptã®ä¾¡å¤ã¯ã¾ãã¾ãåºãèªããããã¨ããã¨ãªããå¤ãã®JavaScriptããã¸ã§ã¯ããTypeScriptã§éçºãããããã«ãªã£ã¦ãã¾ãããã¾ãT
TypeScriptã§ã°ã°ã£ã¦ãåºã¦ããªãã¦ããããããªããã¤ã ä»äººãæ¸ããTypeScriptã®ã³ã¼ãè¦ã¦ãã¨ãã¾ã« const isString = (arg: any): arg is string => typeof arg === "string"; ã®ããã«ã弿° is åãã¨æ¸ããããã®ãè¦ãããã ãã®ã³ã¼ãã¯å¼æ°ã«ãªããåãåã£ã¦ããããstringãªã®ãã©ãããå¤å¥ããããã è¿ãå¤ã®åã«ãarg is stringãã¨æ¸ããã¦ããã ãã®è¨äºã¯ããã«ã¤ãã¦ã®ã¯ãªãã "is" is ãªã«â¦ ãã®"is"ã¨ãããã¼ã¯ã¼ããã°ã°ã©ããªãã£ããã¡ããã¡ãä½ãã¦ã©ãã°ã°ã£ãããããããããªãããã°ã°ã£ã¦ãããã¾ãããã£ã½ãã®ããããããªãã¦å°ãã What is this "is" keyword? ã¨ããæ°æã¡ã«ãªããisãã²ã·ã¥ã¿ã«ãå´©å£ã "is"ã¯åã®çµãè¾¼ã¿ãã§ã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}