並び順

ブックマーク数

期間指定

  • から
  • まで

281 - 320 件 / 513件

新着順 人気順

TypeScriptの検索結果281 - 320 件 / 513件

  • ESLint コアルールの TypeScript 対応について

    ESLint コアルールの TypeScript 対応について ESLint v9.23.0 で ESLint のコアルールの TypeScript 対応が開始しました。 その後の ESLint のアップデートでもコアルールの TS 対応が進んでいます。ESLint コアの責務を増やすような機能追加は少し意外だと感じたので、その背景について調べてみました。 背景: 従来のコアルールの拡張方法の課題 ESLint のコアルールは JavaScript を想定して書かれたものであるが、TypeScript に対してもほぼ期待通り動作するルールが多い。TypeScript は JS のほぼ上位互換な言語であるため、TypeScript 用のパーサー (@typescript-eslint/parser) が吐き出す AST もほぼ上位互換であり、パーサーさえ TS 用のものを使えば多くの ESL

      ESLint コアルールの TypeScript 対応について
    • JavaScript/TypeScriptからWebAssemblyやネイティブバイナリを生成するコンパイラ「Porffor」の開発が加速へ、開発者がフルタイムで取り組み

      「Porffor」は、JavaScript/TypeScriptをWebAssemblyバイナリやネイティブバイナリへとコンパイルする実験的なツールであり、これまでにない2つの特徴を備えています。 1つ目はJavaScript/TypeScriptをコンパイルしてWebAssemblyバイナリやネイティブバイナリを生成しようとしている点です。 これまでもJavaScript/TypeScriptをWebAssemblyに変換するツールは存在していましたが、JavaScriptのコードとWebAssembly版のJavaScriptエンジンを1つにパッケージングするという手段で実現していました。 実行時には、パッケージ内部のJavaScriptコードをWebAssembly版JavaScriptエンジンで実行していたのです。そのため生成されたバイナリの大きさは比較的大きく、また実行速度はあく

        JavaScript/TypeScriptからWebAssemblyやネイティブバイナリを生成するコンパイラ「Porffor」の開発が加速へ、開発者がフルタイムで取り組み
      • 型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語

        紙書籍をお届けします(PDFがついてきます) PDFのみ必要な場合は、こちらからPDF単体を購入できます 通常はご注文から2~3営業日で発送します。 年末年始や大型連休など、1週間から10日程度、配送のお休みをいただく場合があります。詳しくはお知らせをご覧ください。 型システムがようやくわかった! 遠藤侑介 著 184ページ A5判/1色刷 ISBN:978-4-908686-20-7 2025年4月15日 第1版第1刷 現代の開発環境では、エディタ上でコードを書いている最中から、実行もせずにエラーが判明することがあります。コードの補完でも、文脈に適した候補が魔法のように提示されてきます。こうした機能で中心的な役割を果たすのが「型システム」です。 では、なぜ型システムはプログラムのエラーを早期に発見したり、適切な補完候補を絞り出せたりするのでしょうか? 背景となる数学の理論を教科書で学ぶ以

          型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語
        • Claude Projectsを活用して、Deno / TypeScriptで言語処理系を書いてみた話

          背景 Claude Projectsをもっと活用できるようになりたい Deno / TypeScriptで何か作りたい という理由で、なんとなく「プログラミング言語的なものをClaudeと一緒に作ってみるか」と思いつきました。作業ログや学び的なものをせっかくなので残しておきます。 作成したのは以下: 基本的に私は指示役の男としてClaudeにコードを書かせることに徹しています。また、また今回ChatGPT、Cursorなどその他の生成AI系サービスは一切使っておりません。 開発方針 今回、言語をリッチに作り込むことが目的ではないため、比較的言語仕様がシンプルなGo言語を極限まで劣化させた言語を作ることとします。名前はpoor-go と名付けました。コマンドや拡張子は pgoとします。 最小ゴールとして、以下の hello-world.pgo がコンパイルでき、実行すると hello wor

            Claude Projectsを活用して、Deno / TypeScriptで言語処理系を書いてみた話
          • Zod v4 で破壊的変更が入りそうな件

            日本時間で昨日の深夜にZod v4に関するchangelogが公開された。 Zod Changelog うっきうきで見に行ったが、かなり破壊的な変更が入ろうとしている。 deprecates .email() etc[https://v4.zod.dev/v4/changelog#zstring-updates] 元々z.string().email()のようにかけていたこれらは、z.email();と呼び出すように変更される。 現行のz.string().email()らに関しては、 The method forms (z.string().email()) still exist and work as before, but are now deprecated. They may be removed in a future version. z.string().email()は

              Zod v4 で破壊的変更が入りそうな件
            • GitHub - microsoft/typescript-go: Staging repo for development of native port of TypeScript

              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                GitHub - microsoft/typescript-go: Staging repo for development of native port of TypeScript
              • ConnectによるgRPCを超えたスキーマ駆動開発(Golang/TypeScript)

                こんにちは。PortalKeyの植森です。 前回、PortalKeyの主要技術に関してざっくりと解説をしました。 今回は、その中のひとつであるConnectについて掘り下げていきます。 Connectとは? Connectは、Buf Technologies社が開発したRPCフレームワークです。Protocol Buffersによって通信を定義し、効率的なサーバー/クライアント間通信を実現します。 まずはConnectの特徴について解説していきます。 Production-grade simplicity: 本番運用のシンプルさ Connectは本番運用でのシンプルさを特徴の1つとしています。 gRPCは通信するためにgRPCクライアントや grpcurl のようなツールを使わなければ通信することが困難であったり、Webから利用する場合 gRPC-Web を使う必要がありそのために Env

                  ConnectによるgRPCを超えたスキーマ駆動開発(Golang/TypeScript)
                • TypeScript + Reactで特定の要素だけを受け付けるコンポーネントを型安全に実装する - Qiita

                  Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                  • Storybook の情報を抜き出して MCP サーバにしてみる

                    LayerX バクラク事業部 Enabling チームでスタッフエンジニアをしている izumin5210 です。 Ubie さんの「社内デザインシステムをMCPサーバー化したらUI実装が爆速になった」を拝見し、悔しかった感動したので、自分でも試してみました。 MCP ツール設計 以下に引用する Ubie さんのスライドで解説されているとおりですが、現行モデルでは全コンポーネントのコードやルールを一気に渡してもノイズが多くなりすぎるためか、満足のいく性能は出ませんでした。 これは MCP サーバ化したとしても同様で、Tool 1回の呼び出しで全コンポーネントの詳細情報をすべて返すとやはり情報がぼやけてしまいます。 AI Coding Agent Enablement - エージェントを自走させよう (p.23) これらを踏まえると、以下のような2つのツールに分けて提供するのがよさそうだと判

                      Storybook の情報を抜き出して MCP サーバにしてみる
                    • TypeScriptの"いま”を追う、TSKaigi 2025参加記 - カミナシ エンジニアブログ

                      まえがき はじめまして!カミナシでソフトウェアエンジニアをしている shimmy(@naoya7076) です。 カミナシは 2025年5月23・24日に開催された「TSKaigi 2025」にゴールドスポンサーとして協賛し、私は現地で参加しました。 各登壇の内容やトーク内容の詳細は、きっと誰かがまとめてくれていると思いますので、この記事では以下の点に絞って書いていこうと思います。 やること 自分の中でテーマごとに整理した内容と、それぞれの感想 TS Kaigiで自分が聞いたセッション全体を通じて感じたこと やらないこと 登壇の内容を網羅的に伝えること 全ての登壇について詳細に書くこと 静的解析 The New Powerful ESLint Config with Type Safety The New Powerful ESLint Config with Type Safety -

                        TypeScriptの"いま”を追う、TSKaigi 2025参加記 - カミナシ エンジニアブログ
                      • tsconfig.jsonの最近の新機能 ファイルパス編

                        2024-10-02 Vue Fes Japan × TSKaigi 合同イベント「次世代フロントエンドツールチェイン」

                          tsconfig.jsonの最近の新機能 ファイルパス編
                        • Effective TypeScript 第2版

                          TypeScriptの実用書。TypeScriptは、驚異的な柔軟性と豊かな表現力を備えた型システムを持ち、JavaScriptコミュニティに広く浸透しています。その一方、TypeScriptは多くの高度な機能を持つため、それらを使いこなし、真に「effectiveな」TypeScriptコードを書ける開発者は決して多くありません。本書では、TypeScriptを最大限に活用するための83項目のアドバイスを、実践的なコードとともに提供します。本書を読めば、TypeScriptの基本をマスターしたばかりの初級者が中級者へ、そしてTypeScript言語を使いこなすエキスパートへとステップアップできるでしょう。 賞賛の声 訳者まえがき まえがき(第2版) まえがき(初版) 1章 TypeScriptとは何か 項目1 TypeScriptとJavaScriptの関係を理解する 項目2 どのTyp

                            Effective TypeScript 第2版
                          • Pragmatic Functional Programming in TypeScript

                            Pragmatic Functional Programming in TypeScript Yuichi Goto | TSKaigi 2025 on May 24, 2025 発表者について Yuichi Goto @yasaichi パーフェクトRuby on Rails共著者 株式会社EARTHBRAIN [PR] EARTHBRAINとプロダクトについて 2021年7月創業のテクノロジースタートアップ 建設生産プロセスの生産性・安全性の向上を実現するデジタル ソリューション「Smart Construction®」を開発・保守 相互連携する複数のソフトウェア・ハードウェアの形で提供 プロダクトの一部は世界20カ国以上で利用 本セッションについて 関数型プログラミング(FP)を学んでも、実務での活用方法に悩む方は少なくありません。純粋関数、イミュータブルな値、モナドなどの概念を、具

                              Pragmatic Functional Programming in TypeScript
                            • TS 5.7の --rewriteRelativeImportExtensions オプションを使う前に読む記事

                              TypeScript 5.7で追加される --rewriteRelativeImportExtensions オプションは、その使用にあたって注意が必要なオプションです。 背景としては、このオプションに関して最近英語圏のTSエヴァンジェリストのような人が積極的な活用を推奨する投稿をしました。一方で、TypeScriptチームはこのオプションを使うのは限定的な場合に限るべきとしています。 この記事ではTypeScriptチームの側に寄り添い、--rewriteRelativeImportExtensions オプションをむやみに使うべきではない理由について解説します。 以下に引用するのはTypeScriptチームのRyan氏の投稿のひとつです。 If you can't coherently explain why this flag wasn't present for the previ

                                TS 5.7の --rewriteRelativeImportExtensions オプションを使う前に読む記事
                              • Claude Codeのあるコーディング

                                Anthropicが提供するClaude Codeを使用して、TypeScript製のCLIツールをつくりました。Claude Codeのような自走力の高いAIエージェントとうまくやっていく方法を考えつつ、Notion MPCとの連携といったセットアップの方法を記事にまとめます。 プロジェクトの説明 今回はお試しでつくったのは「cowtodo」という、Markdownファイル内のTODOリストを解析して、cowsayで表示するCLIツールです。 主な機能 Markdownファイル内の - [ ] や - [x] の形式で書かれたタスクを解析 完了/未完了のタスクを分類して表示 cowsayライブラリを使用したアスキーアートによる表示 ファイル監視による自動更新 技術スタック TypeScript Node.js Ink (ターミナルUIの構築) meow (コマンドライン引数の解析) 開発

                                  Claude Codeのあるコーディング
                                • TypeScript でエフェクトシステムを再現したい

                                  tskaigi で susisu さんの Generator で Promise ランタイムを作る発表をみて、昔作ったやつがもっとやれそうな気がしたので、やってみた話。 やりたいこと TS の言語システムが物足りなくて、ドメインを表現しきれない。とくに副作用を持つ関数に、なんとかして副作用の型を宣言したい。 過去に、 Async Generator でこれができるのを確認した。 function print(): void & Eff<Operation.Console> { console.log("hello"); } async function* main() { yield print(); } for await (const _eff of main()) { } // この型が最終的に発生した副作用の合計を表現する export type MainOps = GetEffe

                                    TypeScript でエフェクトシステムを再現したい
                                  • 開発を止めない段階的フロントエンドリプレイスの実践 (2) 技術編 - エムスリーテックブログ

                                    【デジカルチーム ブログリレー2日目】 こんにちは、デジカルチームでソフトウェアエンジニアをしている穴繁です。 長年開発を続けてきたサービスを運用していると、「そろそろアレもコレも新しくしたいなぁ…でもサービスは止められないし、どう進めたものか…」なんて頭を悩ませることはありませんか? 今回は、まさにそのような状況で私たちが実践した「開発を止めない段階的フロントエンドリプレイス」について、計画・技術・組織という3つの観点からご紹介します。 前回の計画編では、なぜ段階的なリプレイスを選択したのか、そしてその全体像についてお話ししました。 www.m3tech.blog 続く本記事(技術編)では、そのリプレイスを支えた具体的な技術要素や、導入の過程で得られた知見についてお話しします。 デザインシステムを活用したUIリプレイス なぜRadix UIを選んだか? Radix UIへの移行で直面した

                                      開発を止めない段階的フロントエンドリプレイスの実践 (2) 技術編 - エムスリーテックブログ
                                    • GitHub - litdb/litdb: Lightweight RDBMS agnostic TypeScript/JS abstraction for SQLite, PostgreSQL and MySQL

                                      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                        GitHub - litdb/litdb: Lightweight RDBMS agnostic TypeScript/JS abstraction for SQLite, PostgreSQL and MySQL
                                      • Re: type-challengesから始めるTypeScript実践演習 - 初級編

                                        技術記事は はてなブログ へお引越ししました。 興味を持ってくださった方はZennではなくこちらをご購読いただければと思います🙏 type-challengesは型システムの仕組みをより深く理解し、独自のユーティリティを記述したり、あるいは単に型パズルを楽しんだりできるOSSプロジェクトです。 とはいえ、いきなりtype-challengesに挑むと挫折します。少なくとも私がそうでした。 なので、この記事ではまず最初にtype-challengesを解くために必要なTypeScriptの知識を解説します。 その後、実際にtype-challengesの問題を解いてみることで、座学→実践という形式でTypeScriptの型システムを学ぶことを目指します。 この記事は「一度はTypeScriptの公式ドキュメントやサバイバルTypeScriptを通して読んだけど、実際にコードを書こうとすると

                                          Re: type-challengesから始めるTypeScript実践演習 - 初級編
                                        • CSS Modules を便利に使うためのツールキット作った - mizdra's blog

                                          その名も CSS Modules Kit です。去年の11月からずっと作ってました。 github.com www.youtube.com 何故作ったか 実は以前にも happy-css-modules という CSS Modules のための補助ツールを作っていました。これを使うと、.module.css から import したオブジェクト (styles) に TypeScript の型が付き、かつコードジャンプできます。 www.mizdra.net 便利ではあったのですが、不満がなかったわけではありません。 .module.css.d.ts.map が .module.css の横に生成されてしまう ファイルツリーの見通しが悪くなる VS Code であれば files.exclude でファイルツリーから隠せるが...他のエディタではそうはいかないケースも Button.mod

                                            CSS Modules を便利に使うためのツールキット作った - mizdra's blog
                                          • Zodと設定0行でNext.jsのRoute Handlersに完全な型を付与する最強ライブラリ「FrourioNext」

                                            Next.js + REST APIを必要とする人のためのライブラリ 世間がRSCで盛り上がっている今でも私はREST APIを好んで使っています。OpenAPIをSwaggerUIで展開してAPI仕様書として納品できるし、保守引継ぎのためのエンジニア教育も比較的簡単です。 SwiftやKotlinでネイティブアプリ対応する場合もOpenAPIからHTTPクライアントを自動生成して使うことが多いのではないでしょうか? ゆえにNext.jsのRoute HandlersでAPIを開発したい場面がそれなりにあるのですが、公式の方法だけだと型が緩くて辛いです。回避策として全てのリクエストをHonoに投げて型を付ける記事をよく見かけますが、ファイルベースルーティングの利点が失われてしまいます。 この記事では、aspidaとfrourioの開発経験を活かして設計されたRoute Handlers特化

                                              Zodと設定0行でNext.jsのRoute Handlersに完全な型を付与する最強ライブラリ「FrourioNext」
                                            • AI人格を形成するエンジンを自作してみる【蒼月ハヤテプロジェクト #001】

                                              はじめに 世の中にAIキャラクターというジャンルがあります。 それは、キャラクターの応答や行動をAI、いわゆるChatGPTなどで生成するというものです。ChatGPTの登場以降、技術は急速に発展し、今ではAIに配信をさせる「AITuber」と呼ばれるものまで誕生しています。 一方で、この分野において、決定的に欠落しているものがあります。それは「自己組織的な人格形成」と「自律的な行動の創発」です。 いままでのAIキャラクターは、あらかじめ開発者やユーザーが設定したキャラクター像に則って動いたりします。しかし、逆に言えばAIが自分で判断してそのような人格や思想をもったのではなく、開発者の想定で作られたものです。行動も設計した中での行動に過ぎません。 私は、自分で色々なことに驚いたり、喜んだり、悲しんだり、自分で考え、自分で行動することができるAI主体、「ゴースト」が作りたいと思いました。「ゴ

                                                AI人格を形成するエンジンを自作してみる【蒼月ハヤテプロジェクト #001】
                                              • tslogで実現するセキュアなメタデータ管理とロギング

                                                こんにちは、sugar-catです。 はじめに 皆さんはTypeScriptでバックエンド開発を行う際に、どのようにロギングをしていますか。 この記事では、TypeScript製のロギングライブラリであるtslogの紹介と、その内部の仕組み、秘匿情報を含むログを出力しないための方法について解説します。 ログの種類 この記事ではアプリケーションログを扱います。アプリケーションコンテナで出力された標準出力を収集し、任意の監視ツールに送信し表示されるようなログを指します。 アクセスログや監査ログ、システムログのようなものは扱いません。 tslogとは tslogはTypeScript製で作成された、構造化ロギングを行うためのロギングライブラリです。 主な特徴として、Node.jsとブラウザのどちらにも対応しており、他のロギングライブラリと異なり外部のライブラリへの依存が一切ない点や、コードベース

                                                  tslogで実現するセキュアなメタデータ管理とロギング
                                                • TypeScript使いの憂鬱:never型はプロパティを持つか | 雑記帳

                                                  never型とプロパティアクセス TypeScriptにはneverという型があります。先日も記事にしましたが、簡単に言うとこれは「値を持たない型」です。 never型は、あらゆる型に対してその部分型として振る舞います。例えば、never が number の部分型であることは次のコードでわかります: type T<U extends number> = {}; type A = T<string>; // stringはnumberの部分型ではないのでエラー type B = T<never>; // neverはnumberの部分型なのでコンパイルが通る さて、部分型関係と、「その型の式に対してできる操作の集合」の関係について考えましょう。あまり面白い例を思いつかなかったのでアレですが、次の型を考えます: type UserInfo = { name: string }; type D

                                                  • TypeScriptのBranded TypeとZodの.brand - Mitsuyuki.Shiiba

                                                    Branded Typeについては、もういろんなところで触れられているから、わざわざ書かなくてもいいよなぁという気持ちがありつつ。でも、せっかく頭の整理をしたから、来月の自分用にまとめておくくらいはやっておこうか、という気持ちになったのでメモを残しておく。それとZodの.brand。 やりたいこと 次の2つの型に対する値を間違えて渡したときに、TypeScriptの型検査でエラーになってほしい。 type UserId = number; type BookId = number; TSの型システムはStructural Subtypingを採用しているので、構造が同じだったら部分型として扱われる。だから、↓こんな風にUserIdを引数で受け取る関数にBookIdの値を渡してもエラーにならない。どちらも同じnumber型だから。 const getUser = (id: UserId) =

                                                      TypeScriptのBranded TypeとZodの.brand - Mitsuyuki.Shiiba
                                                    • 【海外記事紹介】なぜTypeScriptはGoで書き直されたのか?C#やRustじゃない理由は?

                                                      3月19日、海外のテクノロジーメディアThe New Stackが「Microsoft TypeScript Devs Explain Why They Chose Go Over Rust, C#」と題した記事を公開した。この記事では、TypeScriptコンパイラをGoへ移植した背景や、その理由について詳しく紹介されている。 3月19日、海外のテクノロジーメディアThe New Stackが「Microsoft TypeScript Devs Explain Why They Chose Go Over Rust, C#」と題した記事を公開した。この記事では、TypeScriptコンパイラをGoへ移植した背景や、その理由について詳しく紹介されている。 以下に、その内容を紹介する。 先ごろMicrosoftは、TypeScriptのコンパイラを新たなプログラミング言語であるGoに 移植す

                                                        【海外記事紹介】なぜTypeScriptはGoで書き直されたのか?C#やRustじゃない理由は?
                                                      • Prisma ORM Manifesto: Clarity and Collaboration

                                                        This manifesto outlines Prisma’s vision for the future: addressing key challenges, setting clear priorities, and empowering collaboration to build a better experience for our community. Refocusing for the Future Prisma has come a long way, and we’re proud of what we’ve achieved together. From Accelerate and Pulse to TypedSQL and Prisma Postgres, the tools we’ve built have grown alongside an incred

                                                          Prisma ORM Manifesto: Clarity and Collaboration
                                                        • テスト用のオブジェクトを簡単に作れるFactoryJSというライブラリを作った|noteエンジニアチームの技術記事

                                                          登壇者 TypeScriptでバックエンドのテストを書くときの課題早速なんですが、みなさんテストを書いてますでしょうか? 昨今では、TypeScriptでバックエンドを書けるのが普通になってきました。バックエンドで利用できるORMやフレームワークも充実してきています。 バックエンドはフロントエンドに比べてデータベースを扱ったり、重要なロジックが含まれているので、しっかりとテストを書きたいというモチベーションが湧いてくると思います。 そこで課題になるのが、テストデータの準備ですね。 例えば、Prismaで「ユーザーが管理者ならtrueを返す」というシンプルな関数を作ったとします。テスト対象のコードがシンプルなので、テストもシンプルに書けると思うかもしれません。 しかし、上記のテストコードを見てもらうとわかるとおり、ユーザーデータの作成する処理で数行のコードを書く必要があります。テストと関係の

                                                            テスト用のオブジェクトを簡単に作れるFactoryJSというライブラリを作った|noteエンジニアチームの技術記事
                                                          • ts-blank-space

                                                            What is ts-blank-space? ts-blank-space is a fast type-stripping compiler that converts TypeScript to JavaScript. It supports a modern subset of TypeScript by erasing the types and replacing them with whitespace. That's it. It is not a type checker and does not perform any other code transformations. The underlying technique can improve build performance and simplify development. The implementation

                                                            • TypeScriptでGeneric Typeに対するNarrowingをしたかったけど現在のところ対応していなかった - Mitsuyuki.Shiiba

                                                              2024-11-11 追記ここから ---- TS 5.8で、その1のインデックスアクセス型の方はサポートされそう。その2の方はその対応が入ってもサポートされない。 追記ここまで ---- 最初にまとめ 現在のTypeScript(2024-09-19時点のバージョン5.6.2)では Generics と Control Flow Analysis は、いい感じには連携しないということを学んだ。 どういうこと?その1 Genericsを使って型安全にやりたいなぁと思って、こんなコードを書いてみてもコンパイルエラーになる。 type Mapping = { a: boolean, b: string, } function getValue<K extends "a" | "b">(key: K): Mapping[K] { if (key === "a") { return true; }

                                                                TypeScriptでGeneric Typeに対するNarrowingをしたかったけど現在のところ対応していなかった - Mitsuyuki.Shiiba
                                                              • TypeScriptのUtilityTypesについて調べてみた - iimon TECH BLOG

                                                                ■はじめに ■ユーティリティ型とは? ■Partial< Type >型 ◆説明 ◆どんなときに使えそう? ■Required< Type > 型 ◆説明 ◆どんなときに使えそう? ■Readonly< Type >型 ◆説明 ◆どんなときに使えそう? ■Record< Keys, Type >型 ◆説明 ◆どんなときに使えそう? ■Pick< Type, Keys >型 ◆説明 ◆どんなときに使えそう? ■Omit< Type, Keys >型 ◆説明 ◆どんなときに使えそう? ■Exclude< UnionType, ExcludedMembers >型とExtract< Type, Union >の型 ◆説明 ◆どんなときに使えそう? ■NonNullable< Type >型 ◆説明 ◆どんなときに使えそう? ■ReturnType< Type >型 ◆説明 ◆どんなときに使えそう

                                                                  TypeScriptのUtilityTypesについて調べてみた - iimon TECH BLOG
                                                                • tsconfig.json paths やめ方

                                                                  tsconfig.jsonのpaths設定でimport文にエイリアスを使えるようにしたものの、 tscでトランスパイルするとエイリアス形式のパスは変換されない パスの変換のためにtsconfig-pathsなどの追加ライブラリが必要で、ビルドコマンドが冗長になる jestなどはpathsを反映するために追加設定が必要 などで微妙な気持ちになってきたことはありませんか。 一度導入すると利用箇所が結構多くなってきて手動で戻すには大変すぎるし、まあ動いてるからいいか...みたいな。 そんな時のために自動で相対パスに戻せるeslintプラグインを作ってみました。 やめ方 @mkizka/eslint-plugin-relative-import を入れてeslint --fixするだけ。 設定は↓のような感じです。 // eslint.config.js import { relativeImp

                                                                    tsconfig.json paths やめ方
                                                                  • Next.jsのIntercepting RoutesとParallel Routesを使ってモダンなUXを実現する

                                                                    今回はNext.js 13.3のApp Routerから導入されたIntercepting RoutesとParallel Routesを使用して、モダンなUXを実現する方法を解説します。 実際に動作するデモ https://nextjs-intercepting-routes-example-igz0.vercel.app/articles ※ モバイルでは通常の記事一覧表示になりますが、PCではサイドバーを使ったプレビュー表示になります。 ソースコード 1. はじめに このプロジェクトでは以下のような機能を実装します。 記事一覧ページ PC表示時は2カラムレイアウト 記事一覧の右側にサイドバーで記事プレビューを表示 モバイル表示時は1カラムレイアウト 通常の記事一覧ページを表示 記事詳細ページ PC・モバイルで共通のページ 通常のブログの記事ページのように記事の内容を表示 (1) In

                                                                      Next.jsのIntercepting RoutesとParallel Routesを使ってモダンなUXを実現する
                                                                    • Next.jsの型を厳密に定義しなおしてロジックのミスを発見する

                                                                      これは、株式会社ゆめみ Advent Calendar 2024 13日目の記事です。 Next.js (Pages Router) のAPI Routesのhandlerにおいて、ValibotやZodで値の検証をせずにリクエストボディの値を使用してしまう不具合を、型検査レベルで防ぐことを考えます。 例えば、次のようなコードで、処理の順番やロジックの誤りを型エラーを出して気づきたいといったものです。 import { NextApiHandler } from "next"; import * as v from "valibot"; const RequestBodySchema = v.object({ someValue: v.string(), }); const handler: NextApiHandler = async (req, res) => { // バリデーション

                                                                        Next.jsの型を厳密に定義しなおしてロジックのミスを発見する
                                                                      • サクッと作る型安全なBFF開発環境 - マイクロサービス × OpenAPI自動生成

                                                                        これは SMat Advent Calendar 2024 の12/4分の記事です。 弊社技術イベントの宣伝です。 IoTやデータ処理周りに少しでも興味がある方は是非ご参加ください。お一人様大歓迎です!まったり技術の話をしましょう! はじめに こんにちは、株式会社エスマット エンジニアの hi6okuni です。 今回は、OpenAPI Specification(以降、OpenAPIと呼ぶ)からTypeScriptの型自動生成の仕組みをサクッと作った時の振り返りです。 型の自動生成自体はすでに多くの事例や記事が公開されていますが、本記事では特にマイクロサービスアーキテクチャにおいて「クライアントサイド(Next.js)とマイクロサービス(Go)の間にBFF(tRPCサーバー)が存在する」という構成に焦点を当て、実装例と得られた知見を紹介します。 特に以下のような課題をお持ちの方に参考にな

                                                                          サクッと作る型安全なBFF開発環境 - マイクロサービス × OpenAPI自動生成
                                                                        • LAPRASのフロントエンド改善活動ふりかえり [2024年]

                                                                          LAPRASのエンジニア組織ではフロントエンド専任のエンジニアはいません。皆プロジェクト単位でバックエンドもフロントエンドも(ときにインフラも)触りながら開発しています。 ただそれだけだと個別領域の技術的負債の解消が進みにくいので、フロントエンドに関心のある有志のエンジニアがフロントエンド改善委員会という会を結成し、週1回1時間集まり改善活動を行っています。今回はその委員会メンバーで行ってきた改善活動を紹介します。 🐉 今年行ったフロントエンドの改善活動 時系列、規模は順不同で紹介します。 JestからVitestへの移行 LAPRASのテストは開発当初からJestでした。ただ、JestはES Modulesのサポートやパフォーマンスの問題があり、今年Vitestに移行しました。 結果CIのフロントエンドテスト実行時間が約1/3になり、リリースのリードタイムの短縮にも繋がりました。ES

                                                                            LAPRASのフロントエンド改善活動ふりかえり [2024年]
                                                                          • Biome v2の型推論を試して限界を知る

                                                                            皆さんこんにちは。先日、Biome v2がリリースされ話題となりました。Biome v2の新機能の一つに型推論があります。 TypeScriptコードに対するlintにおいて型情報を使う (type-aware linting) 機能は、これまでのところTypeScript-ESLintによって提供されてきました。これは、実際のTypeScriptコンパイラを使って型情報を取得するので、重いという欠点がありました。TypeScript自体もGoへの移植などを通じてパフォーマンス改善に取り組んでいますが、Biomeはこの問題に対して別のアプローチをとっていました。それが、本家TypeScriptコンパイラに頼らず独自に型推論を行うというものです。 ただし、TypeScriptコンパイラは非常に複雑なシステムであり、別実装でその型推論結果を完全に再現するのはまず不可能です。そのため、Biome

                                                                              Biome v2の型推論を試して限界を知る
                                                                            • Announcing TypeScript 5.7 - TypeScript

                                                                              Today we excited to announce the availability of TypeScript 5.7! If you’re not familiar with TypeScript, it’s a language that builds on JavaScript by adding syntax for type declarations and annotations. This syntax can be used by the TypeScript compiler to type-check our code, and it can also be erased to emit clean, idiomatic JavaScript code. Type-checking is helpful because it can catch bugs in

                                                                                Announcing TypeScript 5.7 - TypeScript
                                                                              • TypeScriptでthrowされたエラーにValibotで型をつける

                                                                                TypeScriptには、かならずunknownな型が割り当てられる値があります。それはthrowされた値です。 JavaScriptでは Errorオブジェクトに限らずどのような値でもthrowすることができるので、catchで捉えた値には必然的に unknown 型が割り当てられます。 勿論、下のコードのようにinstanceofを使ってnarrowing(絞り込み)をすることはできるのですが、Errorに限らず細かくエラーハンドリングしたい時に少し困りますよね。

                                                                                  TypeScriptでthrowされたエラーにValibotで型をつける
                                                                                • Biome v2—codename: Biotype

                                                                                  We are happy to announce that Biome v2 is officially out! 🍾 Biome v2—codename: Biotype, the first JavaScript and TypeScript linter that provides type-aware linting rules that doesn’t rely on the TypeScript compiler! This means that you can lint your project without necessarily installing the typescript package. With this release, the Core Contributors of the project want to show to the whole comm

                                                                                    Biome v2—codename: Biotype