|
| 1 | +--- |
| 2 | +title: "2025-03-06: TypeScript 5.8(erasableSyntaxOnly), Next.js 15.2, Lynx" |
| 3 | +author: "azu" |
| 4 | +translator: rewrite0w0 |
| 5 | +layout: post |
| 6 | +date: 2025-03-06T02:01:38.698Z |
| 7 | +category: JSer |
| 8 | +tags: |
| 9 | +- TypeScript |
| 10 | +- React |
| 11 | +- Native |
| 12 | +- ESLint |
| 13 | +- css |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +JSer.info #727 - TypeScript 5.8 출시되었습니다. |
| 18 | + |
| 19 | +- [Announcing TypeScript 5.8 - TypeScript](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/) |
| 20 | + |
| 21 | +TypeScript 5.8에서는, conditional return type 개선, `require(esm)` 대응, `--module node18` 추가되었습니다 |
| 22 | +또한, Node.js의 `--experimental-strip-types`와 설정을 조합할 수 있는 `--erasableSyntaxOnly` 플래그 추가, `--libReplacement` 플래그 추가도 있습니다. |
| 23 | + |
| 24 | +[erasableSyntaxOnly](https://www.typescriptlang.org/tsconfig/#erasableSyntaxOnly) 옵션은, 다음 기능 금지하면 자료형 제거만으로도, JavaScript로 실행 가능한 TypeScript 코드 작성할 수 있는 설정입니다. |
| 25 | + |
| 26 | +- enum declarations |
| 27 | +- namespaces and modules with runtime code |
| 28 | +- parameter properties in classes |
| 29 | +- Non-ECMAScript `import =` and `export =` assignments |
| 30 | + |
| 31 | +Node.js의 Type Stripping 관련해서는, 다음 글 참조 부탁드립니다. |
| 32 | + |
| 33 | +- [Node.js Type Stripping Explained](https://satanacchio.hashnode.dev/everything-you-need-to-know-about-nodejs-type-stripping) |
| 34 | + |
| 35 | +---- |
| 36 | + |
| 37 | +Next.js 15.2 출시되었습니다. |
| 38 | + |
| 39 | +- [Next.js 15.2 | Next.js](https://nextjs.org/blog/next-15-2) |
| 40 | + |
| 41 | +Error Overlay 스택트레이스 게시 개선, Dev indicator 개선, `generateMetadata` 처리를 비동기 대응, Turbopack 성능 개선이 있습니다. |
| 42 | +또한, 실험적 기능으로 View Transition API 대응, Node.js middleware 지원도 추가되었습니다. |
| 43 | + |
| 44 | +---- |
| 45 | + |
| 46 | +[Lynx](https://lynxjs.org/) React/CSS/TypeScript 사용한 네이티브 애플리케이션 개발 툴킷을 ByteDance가 공개했습니다. |
| 47 | + |
| 48 | +Lynx는 React 17의 API와 QuickJS 기반한 [PrimJS](https://github.com/lynx-family/primjs) JavaScript 엔진을 사용합니다. |
| 49 | + |
| 50 | +- [Why is it based on compatibility with React 17?](https://lynxjs.org/api/react/index.html#react-apis) |
| 51 | +- [JavaScript Runtime - Lynx](https://lynxjs.org/guide/scripting-runtime/index.html) |
| 52 | + |
| 53 | + 출시 글에는, Instant First-Frame Rendering (IFR)나 Main Thread Script에 관련한 렌더링 최적화에 대해 다루고 있습니다. |
| 54 | + |
| 55 | +- [Lynx: Unlock Native for More - Lynx](https://lynxjs.org/blog/lynx-unlock-native-for-more) |
| 56 | + |
| 57 | + |
| 58 | +---- |
| 59 | + |
| 60 | +{% include inline-support.html %} |
| 61 | + |
| 62 | +---- |
| 63 | + |
| 64 | +<h1 class="site-genre">헤드라인</h1> |
| 65 | + |
| 66 | +---- |
| 67 | + |
| 68 | +## ArkType Docs: Optimized runtime validation for TypeScript syntax |
| 69 | +[arktype.io/docs/blog/2.1](https://arktype.io/docs/blog/2.1 "ArkType Docs: Optimized runtime validation for TypeScript syntax") |
| 70 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">TypeScript</span> <span class="jser-tag">library</span> <span class="jser-tag">ReleaseNote</span></p> |
| 71 | + |
| 72 | +ArkType 2.1 출시. |
| 73 | +패턴 매치 하는 `match` API 추가, `configure`으로 키워드에 에러 메세지를 커스터마이즈 가능하도록 함 |
| 74 | + |
| 75 | + |
| 76 | +---- |
| 77 | + |
| 78 | +## Release 0.11.0 | StyleX |
| 79 | +[stylexjs.com/blog/v0.11.0](https://stylexjs.com/blog/v0.11.0 "Release 0.11.0 | StyleX") |
| 80 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">css</span> <span class="jser-tag">library</span> <span class="jser-tag">ReleaseNote</span></p> |
| 81 | + |
| 82 | +StyleX v0.11.0 출시. |
| 83 | +디버그 정보 개선, CLI 캐시 개선 |
| 84 | + |
| 85 | + |
| 86 | +---- |
| 87 | + |
| 88 | +## Announcing TypeScript 5.8 - TypeScript |
| 89 | +[devblogs.microsoft.com/typescript/announcing-typescript-5-8/](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/ "Announcing TypeScript 5.8 - TypeScript") |
| 90 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">TypeScript</span> <span class="jser-tag">ReleaseNote</span></p> |
| 91 | + |
| 92 | +TypeScript 5.8 출시. |
| 93 | +conditional return type 개선, `require(esm)` 대응, `--module node18` 추가. Node.js `--experimental-strip-types` 같이 설정하는 `--erasableSyntaxOnly` 플래그 추가, `--libReplacement` 플래그 추가 |
| 94 | + |
| 95 | + |
| 96 | +---- |
| 97 | + |
| 98 | +## Release 3.41.0 - 2025.03.01 · zloirock/core-js |
| 99 | +[github.com/zloirock/core-js/releases/tag/v3.41.0](https://github.com/zloirock/core-js/releases/tag/v3.41.0 "Release 3.41.0 - 2025.03.01 · zloirock/core-js") |
| 100 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">polyfill</span> <span class="jser-tag">ReleaseNote</span></p> |
| 101 | + |
| 102 | +core-js v3.41.0 출시. |
| 103 | +Stage 4가 된 `RegExp.escape`/Float16, Stage 1 `Math.clamp` 대응 |
| 104 | + |
| 105 | + |
| 106 | +---- |
| 107 | + |
| 108 | +## Next.js 15.2 | Next.js |
| 109 | +[nextjs.org/blog/next-15-2](https://nextjs.org/blog/next-15-2 "Next.js 15.2 | Next.js") |
| 110 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">Next.js</span> <span class="jser-tag">ReleaseNote</span></p> |
| 111 | + |
| 112 | +Next.js 15.2 출시. |
| 113 | +Error Overlay 스택트레이스 게시 개선, Dev indicator 개선, `generateMetadata` 처리를 비동기 대응, Turbopack 성능 개선. |
| 114 | +실험적 기능으로 View Transition API 대응, Node.js middleware 지원 |
| 115 | + |
| 116 | + |
| 117 | +---- |
| 118 | + |
| 119 | +## Re.Pack 5: Mobile Microfrontends, 5x Faster, Less Configuration - Re.Pack |
| 120 | +[re-pack.dev/blog/repack-5-release](https://re-pack.dev/blog/repack-5-release "Re.Pack 5: Mobile Microfrontends, 5x Faster, Less Configuration - Re.Pack") |
| 121 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">Native</span> <span class="jser-tag">bundler</span> <span class="jser-tag">ReleaseNote</span></p> |
| 122 | + |
| 123 | +React Native 대상 빌드 도구 Re.Pack 5 출시. |
| 124 | +webpack 대신 Rspack 이용, Module Federation 대응 |
| 125 | + |
| 126 | + |
| 127 | +---- |
| 128 | + |
| 129 | +## Release pnpm 10.5 · pnpm/pnpm |
| 130 | +[github.com/pnpm/pnpm/releases/tag/v10.5.0](https://github.com/pnpm/pnpm/releases/tag/v10.5.0 "Release pnpm 10.5 · pnpm/pnpm") |
| 131 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">pnpm</span> <span class="jser-tag">ReleaseNote</span></p> |
| 132 | + |
| 133 | +pnpm v10.5.0 출시. |
| 134 | +`package.json`에 분산된 `pnpm.*` 설정을 `pnpm-workspace.yaml`에 얹도록 변경 |
| 135 | + |
| 136 | + |
| 137 | +---- |
| 138 | + |
| 139 | +## Chrome 134 | Release notes | Chrome for Developers |
| 140 | +[developer.chrome.com/release-notes/134](https://developer.chrome.com/release-notes/134 "Chrome 134 | Release notes | Chrome for Developers") |
| 141 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">Chrome</span> <span class="jser-tag">ReleaseNote</span></p> |
| 142 | + |
| 143 | +Chrome 134 출시. |
| 144 | +`<select>` 커스터마이즈 지원, `<dialog>`의 `closedby` 속성 지원, Document-Policy에 `expect-no-linked-resources` 추가. |
| 145 | +Shared Storage에서 Web Locks API 지원, Canvas에서 `imageSmoothingQuality` 옵션 지원. |
| 146 | +`getUserMedia` 비표준 API 삭제 |
| 147 | + |
| 148 | +- [WICG/shared-storage: Explainer for proposed web platform Shared Storage API](https://github.com/WICG/shared-storage "WICG/shared-storage: Explainer for proposed web platform Shared Storage API") |
| 149 | + |
| 150 | +---- |
| 151 | + |
| 152 | +## Lynx |
| 153 | +[lynxjs.org/](https://lynxjs.org/ "Lynx") |
| 154 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">Native</span> <span class="jser-tag">iOS</span> <span class="jser-tag">Android</span></p> |
| 155 | + |
| 156 | +React 17 기반 API와 JavaScript/TypeScript/CSS 사용한 네이티브 애플리케이션 개발 가능한 툴킷. |
| 157 | + |
| 158 | + |
| 159 | +---- |
| 160 | + |
| 161 | +## Release v8.26.0 · typescript-eslint/typescript-eslint |
| 162 | +[github.com/typescript-eslint/typescript-eslint/releases/tag/v8.26.0](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.26.0 "Release v8.26.0 · typescript-eslint/typescript-eslint") |
| 163 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">TypeScript</span> <span class="jser-tag">ESLint</span> <span class="jser-tag">ReleaseNote</span></p> |
| 164 | + |
| 165 | +typescript-eslint v8.26.0 출시. |
| 166 | +TypeScript 5.8 지원 |
| 167 | + |
| 168 | + |
| 169 | +---- |
| 170 | +<h1 class="site-genre">읽을거리</h1> |
| 171 | + |
| 172 | +---- |
| 173 | + |
| 174 | +## What is TypeScript? An overview for JavaScript programmers |
| 175 | +[2ality.com/2025/02/what-is-typescript.html](https://2ality.com/2025/02/what-is-typescript.html "What is TypeScript? An overview for JavaScript programmers") |
| 176 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">TypeScript</span> <span class="jser-tag">article</span></p> |
| 177 | + |
| 178 | +TypeScript가 무엇인가 알려주는 개요적 글. |
| 179 | +TypeScript는 JavaScript에 자료형 구문을 더한 것이라는 점, TypeScript 빌드, type stripping 등의 `tsc` 외 컴파일 관련하여 |
| 180 | + |
| 181 | + |
| 182 | +---- |
| 183 | + |
| 184 | +## Migrating 160,000 Lines of Production Banking JavaScript to TypeScript with Zero Downtime - Ben Howdle - Software Consultant & Advisor |
| 185 | +[benhowdle.im/migrating-js-to-ts-zero-downtime.html](https://benhowdle.im/migrating-js-to-ts-zero-downtime.html "Migrating 160,000 Lines of Production Banking JavaScript to TypeScript with Zero Downtime - Ben Howdle - Software Consultant & Advisor") |
| 186 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">TypeScript</span> <span class="jser-tag">article</span></p> |
| 187 | + |
| 188 | +JavaScript에서 TypeScript으로 이행. |
| 189 | +이행 브런치를 사용해 이행 접근 |
| 190 | + |
| 191 | + |
| 192 | +---- |
| 193 | + |
| 194 | +## Temporal로 변경될 JavaScript 시간 조작[JS Modern Features no.1] | gihyo.jp |
| 195 | +[gihyo.jp/article/2025/02/ride-modern-frontend-07](https://gihyo.jp/article/2025/02/ride-modern-frontend-07 "Temporal로 변경될 JavaScript 시간 조작[JS Modern Features no.1] | gihyo.jp") |
| 196 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">ECMAScript</span> <span class="jser-tag">article</span></p> |
| 197 | + |
| 198 | +ECMAScript Proposal Stage 3 Temporal 관련해서 |
| 199 | + |
| 200 | + |
| 201 | +---- |
| 202 | + |
| 203 | +## Lynx: Unlock Native for More - Lynx |
| 204 | +[lynxjs.org/blog/lynx-unlock-native-for-more.html](https://lynxjs.org/blog/lynx-unlock-native-for-more.html "Lynx: Unlock Native for More - Lynx") |
| 205 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">Native</span> <span class="jser-tag">article</span></p> |
| 206 | + |
| 207 | +React 기반 API와 CSS 사용한 네이티브 애플리케이션 개발이 가능한 Lynx. |
| 208 | +Instant First-Frame Rendering (IFR)나 Main Thread Script 관련해서 |
| 209 | + |
| 210 | + |
| 211 | +---- |
| 212 | + |
| 213 | +## oxlint으로 eslint 고속화시키기 |
| 214 | +[zenn.dev/hiruno\_tarte/articles/how-to-use-oxlint](https://zenn.dev/hiruno_tarte/articles/how-to-use-oxlint "oxlint으로 eslint 고속화시키기") |
| 215 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">ESLint</span> <span class="jser-tag">article</span></p> |
| 216 | + |
| 217 | +oxlint와 ESLint 조합해서 이용하는 설정. |
| 218 | +oxlint와 ESLint 겹친 내용을 oxlint으로 옮겨서, ESLint 플러그인만 체크하는 설정임 |
| 219 | + |
| 220 | + |
| 221 | +---- |
| 222 | +<h1 class="site-genre">웹사이트, 서비스, 문서</h1> |
| 223 | + |
| 224 | +---- |
| 225 | + |
| 226 | +## lynx-family/primjs: JavaScript Engine Optimized for Lynx |
| 227 | +[github.com/lynx-family/primjs](https://github.com/lynx-family/primjs "lynx-family/primjs: JavaScript Engine Optimized for Lynx") |
| 228 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">Native</span> <span class="jser-tag">Tools</span> <span class="jser-tag">library</span></p> |
| 229 | + |
| 230 | +Lynx에 사용되는 JavaScript 엔진. |
| 231 | +QuickJS 기반, GC 구현이나 Chrome DevTools Protocol (CDP) 구현도 추가되어 있음 |
| 232 | + |
| 233 | + |
| 234 | +---- |
0 commit comments