並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 44件

新着順 人気順

TypeScriptの検索結果1 - 40 件 / 44件

  • TypeScriptを導入する意味と限界、型レベルプログラミングの紹介 - Qiita

    はじめに JavaScript/TypeScript初学者を抜けたあたりの方に向けてTypeScriptの利点や限界、型レベルプログラミングについて紹介します。 TypeScriptはJavaScriptをラップしたライブラリであり、静的な型情報をつけることができます。また、それらの型情報をもとに型を推論し、型違反な代入やプロパティへのアクセスなどをプログラム実行 以前 に検知することができるようになっています。 例えば、動的型付けの言語であるJavaScriptでは、以下の関数のa,bには数値だけでなく、文字列を渡すことができます。数値同士を渡せば加算してくれますし、文字列同士を渡せば文字列連結をしてくれます。 「数値計算用の関数なのに、文字列連結に利用できてしまう」という緩さを開発時にはなるべく排除しようというのがTypeScriptを導入する意義です。 以下、TypeScriptの基

      TypeScriptを導入する意味と限界、型レベルプログラミングの紹介 - Qiita
    • TypeScriptの型と値とバリデーション

      TypeScript は本質的に自分に型が付与されていると思っているだけの JavaScript です。 いくら型を付与しようが、それが実行時に影響を与えることはありません。 コードレビューをしているとここを誤解している人が本当に多いです。何度も解説しているのですが、なかなか浸透しないので、TypeScript におけるバリデーションという視点で記事を書くことにしました。 あと TS でバリデータ使って色々作ろうとしている友人と、プログラミング始めたてで zod と openapi を使っいる友人がいたので、彼らが想定読者です。 型と値の名前空間 TypeScript 上での名前空間(スコープ)は2つに分類できます。 値: 実行時にランタイム上のメモリに存在するもの 型: 静的解析時にのみ参照可能なもの。コンパイル時に完全に消滅する。 TypeScript は基本的に JavaScript

        TypeScriptの型と値とバリデーション
      • 2024年のRailsと自由について考える

        えにしテック15周年記念カンファレンスの発表資料です。 https://enishi-tech-15th-anniv-conf.peatix.com/ 資料中で参照しているURLは以下です: https://github.com/rails/rails/milestone/87 https:…

          2024年のRailsと自由について考える
        • Vite ってよく聞くけど何なんですか? あれは

          初めに Vue.js の学習をしているとよく「Vite」という単語を目にすると思います。 一体全体あれはなんなのでしょうか?? なんだかよく分からないコマンドを打つと、いつの間にかプロジェクトが作成されていたり、 ファイルを編集するだけでブラウザで動くようになっていたりします。 そもそも読み方も良くわかりません 😵‍💫 (ヴィテ...? ヴァイト...?) この記事では、Vite についての基本的な情報をまとめてみます。 発音? 発音の仕方は「ヴィート」です。こちらは公式ドキュメントにも書かれています。 Vite(フランス語で「素早い」という意味の単語で /vit/ ヴィートのように発音)は、 しかし、実はこれにはやや表記揺れがあって、「ヴィット」と表記されているところもあります。 例えば、話題になった Kawaii ロゴではそのように表記されています。 まぁこれらはカタカナ表記の限界

            Vite ってよく聞くけど何なんですか? あれは
          • AWS CDKのコード変更時にリアルタイムで構成図のプレビューを表示する

            TL;DR プレビュー対象はcdk synthで出力されたCloudFormationのテンプレートファイル 構成図はVSCode拡張機能aws toolkitのApplication Composerでプレビュー表示(変更検知機能利用) nodemonを用いて、プレビューを開いた状態でtsファイル保存時にcdk synthを実行することで再表示させる nodemon -e ts --ignore cdk.out --exec 'cdk synth' 情報元: aws-summit-2024-iac-booth-demo/realtime-draw-diagram at main · aws-samples/aws-summit-2024-iac-booth-demo · GitHub 前準備 ※コンテナ開発/TypeScriptを前提とする。 1. CDKプロジェクト作成 すでに作成済み

              AWS CDKのコード変更時にリアルタイムで構成図のプレビューを表示する
            • JavaScriptの活躍の場を広げる「ランタイム」の今

              執筆 山内 直 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)に所属するテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。著書に『Bootstrap 5 フロントエンド開発の教科書』、『作って学べるHTML+JavaScriptの基本』など。 監修 山田 祥寛 静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「独習」シリーズ、「これからはじめるReact実践入門」、「改訂3版 JavaScript本格入門」他、

                JavaScriptの活躍の場を広げる「ランタイム」の今
              • ReactとZodで作る堅牢なフォームバリデーション - ICS MEDIA

                前回の記事『2024年版 HTMLで作るフォームバリデーション』ではHTMLの機能を駆使したフォームバリデーションの実装について解説しました。HTMLのみでも高機能なフォームを作成できるのは解説したとおりですが、HTMLに加えてJavaScriptを組み合わせることでより高機能なフォームを作成できます。それに加えて、開発者体験の向上も期待できます。 本記事では3つのライブラリを使用して実践的なフォームを作成する方法を解説します。 UIライブラリ「React」 フォーム向けライブラリ「React Hook Form」 型システムと相性の良いスキーマバリデーションライブラリ「Zod」 また、静的型付け言語であるTypeScriptもこれらのライブラリと同時に使用し、堅牢なフォームの実装を目指します。 本記事を読むことで以下の知識が身につきます。 フォーム画面のユーザー体験(UX)と、フォーム実

                  ReactとZodで作る堅牢なフォームバリデーション - ICS MEDIA
                • <T, K extends keyof T> をちゃんと理解する

                  TL;DR TypeScriptでライブラリなどを覗いているとよく見かける<T, K extends keyof T>について、問題を分解してきちんと理解する試みです。 extends この場合のextendsの役割は継承ではなく、制約です。 例えば以下のようなイメージ。 type StringOrNumber<T extends string | number> = T type A = StringOrNumber<string> type B = StringOrNumber<number> // Type 'boolean' does not satisfy the constraint 'string | number' type C = StringOrNumber<boolean> type User = { id: number; name: string; }; cons

                    <T, K extends keyof T> をちゃんと理解する
                  • 奥野さんと社員のリファクタリング部屋 -リポジトリ層のディレクトリをどう作る?- - トレタ開発者ブログ

                    「奥野さんと社員のリファクタリング部屋」は、リファクタリングに励むトレタの社員と技術顧問の奥野さん ( @okunokentaro ) の間で実際に行われた会話を切り取った開発現場実録コンテンツです。 技術顧問: 奥野さん 三度の飯よりリファクタリングが好き。 今回の質問者: 武市さん トレタ在籍2年。沖縄在住のフロントエンジニア 今回の質問 今回は初期リリースを終えたWebアプリケーション(Next.js)のプロダクトを担当している武市さんから、複数人で開発を進めてきて統率が取れなくなったディレクトリ構造のリファクタリングについての質問です。 APIで外部とやり取りしている部分をリファクタリングして、クリーンアーキテクチャに沿ってリポジトリを作ろうと考えています。 その中で、GraphQL APIレスポンスの結果を変換するアダプター関数(adaptGetIServiceItemsAggr

                      奥野さんと社員のリファクタリング部屋 -リポジトリ層のディレクトリをどう作る?- - トレタ開発者ブログ
                    • TypeScript 5.5 で追加された正規表現構文チェックを理解する

                      TypeScript 5.5で、@graphemeclusterさんによって正規表現リテラルの構文チェックが導入されました🎉 この構文チェックによって、正規表現に間違いがあった場合、事前にTypeScriptがエラーを出力してくれます。 この機能について、次のことが気になったので調べてみました。 どんな構文がエラーになるか なぜ導入されたか どうやってチェックしているか JavaScriptで実行できるがTypeScriptでエラーになる構文はあるか ESLintとのカバー範囲の違い 本記事に関して、誤り等があれば指摘いただけると嬉しいです。 どんな構文がエラーになるか TypeScript 5.5では、正規表現に関するエラーメッセージが40個程度追加されています。 例えば、下記のような構文は、5.5でエラーになります。 // 存在しないフラグ var re = /a/b; // エラー

                        TypeScript 5.5 で追加された正規表現構文チェックを理解する
                      • Cloudflare Workersで構築する非同期ジョブシステム

                        「Cloudflare Workers活用事例 業務利用の決め手とその効果に迫るLunch LT」https://findy.connpass.com/event/318382/ での発表資料です。

                          Cloudflare Workersで構築する非同期ジョブシステム
                        • Next.jsで不要なファイルを一掃する

                          Knipというツールが便利。JaveScriptやTypeScriptで書かれているプロジェクトの未使用のファイルやexportを見つけることができる。 Find unused files, dependencies and exports in JavaScript and TypeScript projects https://knip.dev/ インストールせずに使いたいのでnpxコマンドを使って実行する。 また、Next.jsのプロジェクトで使いたいのでプラグインを導入する。 上記のプラグインの中にNext.jsがあるのでこれを使う。 knip.jsonというファイルをプロジェクトのルートに配置する。除外したいディレクトリはignoreで指定できる。 { "ignore": [ "hoge" ], "next": { "entry": [ "next.config.{js,ts,c

                            Next.jsで不要なファイルを一掃する
                          • TypeScript v4.9からv5.5で追加された機能のおさらい - STORES Product Blog

                            STORES 予約 エンジニアの水野です。STORES 予約 の店舗管理画面で利用しているTypeScriptをv4.8からv5.5にアップグレードしたので追加された主な機能をおさらいしようと思います。 satisfies (v4.9) v4.9で実装されました。 型アノテーションのように型付けしつつ型推論も行う演算子です。 例を見てみましょう。 type Color = 'red' | 'green' | 'blue' const pallet: Record<Color, string | number[]> = { red: [255, 0, 0], green: '#00ff00', blue: '#0000ff', } // pallet.red => string | number[] pallet.redの型はstring | number[]となっています。これはRecor

                              TypeScript v4.9からv5.5で追加された機能のおさらい - STORES Product Blog
                            • Readonly 使ってますか?

                              ムーザルちゃんねるのムーです。今回は TS の Readonly を使うか否か zaru さんと会話しました。 以前の zaru さんのこちらの記事 Reactのpropsはreadonlyにするべきか?で、Readonly については記載していますが、今回会話をする中で改めて気づいた知見などがあったのでシェアしたいと思います。 動画本編の中でも Readonly の罠として二つ紹介していますが、それらについて書いておきたいと思います。 その1 immutable なオブジェクトを mutable なものにアサインすると、変更できてしまう。 これはよく知られている挙動だと思います。 具体的には以下のようなコードです。 interface Cat { readonly name: string; } const cat1: Cat = { name: "Alice" }; cat1.name

                                Readonly 使ってますか?
                              • OpenAPI TypeScript

                                OpenAPI TypeScriptConvert OpenAPI 3.0/3.1 schemas to TypeScript types and create type-safe fetching.

                                • Bun の非互換な拡張 API - moriken's project

                                  Bun は WinterCG meetings に参加せず、標準から外れた拡張を利便性のために結構取り入れている。またエコシステムとして合意の取れていない実装をすることもある。これら API を使ってしまうと Node.js や Deno、Cloudflare Workers などで扱えず相互運用性の問題となる。知らず知らずのうちに使ってしまわないようにまとめておく。 Jarred Sumner @jarredsumner 2024/02/18 02:45 JS runtimes obsess about web standards but web standards orgs are incentivized to only care about browsers Luca Casonato 🏳️‍🌈 @lcasdev 2024/02/18 05:48 @jarredsumner J

                                    Bun の非互換な拡張 API - moriken's project
                                  • Announcing TypeScript 5.5 - TypeScript

                                    Today we’re excited to announce the release of TypeScript 5.5! If you’re not familiar with TypeScript, it’s a language that builds on top of JavaScript by making it possible to declare and describe types. Writing types in our code allows us to explain intent and have other tools check our code to catch mistakes like typos, issues with null and undefined, and more. Types also power TypeScript’s edi

                                      Announcing TypeScript 5.5 - TypeScript
                                    • GitHub - antfu/utils: Collection of common JavaScript / TypeScript utils

                                      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 - antfu/utils: Collection of common JavaScript / TypeScript utils
                                      • TypeScriptの型システムに命を吹き込む: Typia と unplugin-typia

                                        TL;DR この度、unplugin-typia という Library を作りました unplugin-typia を使うと今までめんどくさかった Typia の導入が簡単になります Vite、esbuild、webpackなどフロントエンドで主流の様々なbundlerに対応しています Next.jsでも簡単に使えます Bunにも対応しています はじめに 皆さんはTypeScriptでのValidationにはどのような Library を使っていますか? zodはエコシステムが硬いし、最近だとvalibotが流行りつつありますね。 またarktypeも注目に値するLibraryです。 typeboxも耳にする機会が増えてきました。 また個人的には(厳密にはValidatorではないですが)、unknownutilも手に馴染んでよく使っています。 既存のValidation Librar

                                          TypeScriptの型システムに命を吹き込む: Typia と unplugin-typia
                                        • 参加者2000人超え! TypeScript大規模カンファレンス「TSKaigi 2024」レポート | gihyo.jp

                                          参加者2000人超え! TypeScript大規模カンファレンス「TSKaigi 2024」レポート 2024年5月11日、中野セントラルパークカンファレンスにてTSKaigi 2024が開催されました。TSKaigiは今年初めて開催されたTypeScriptに特化した技術カンファレンスです。前身もない、完全初開催にも関わらずチケットはタイムテーブル公開前に完売。オンライン参加者も含めると2000人を超えるなど、とても注目度が高いカンファレンスとなりました。 今回筆者は運営スタッフとして参加しました。この記事では、TSKaigiがどのようなイベントだったのかに触れたうえで、当日の模様をレポートします。 TSKaigiついて TSKaigiは、日本最大級のTypeScriptをテーマとした技術カンファレンスです。コロナ禍で様々なオフラインイベントが打撃を受ける中、TypeScriptを扱うエ

                                            参加者2000人超え! TypeScript大規模カンファレンス「TSKaigi 2024」レポート | gihyo.jp
                                          • Announcing TypeScript 5.5 RC - TypeScript

                                            Today we are excited to announce the availability of the release candidate of TypeScript 5.5. To get started using the RC, you can get it through NuGet, or through npm with the following command: npm install -D typescript@rc Here’s a quick list of what’s new in TypeScript 5.5! Inferred Type Predicates Control Flow Narrowing for Constant Indexed Accesses Type Imports in JSDoc Regular Expression Syn

                                              Announcing TypeScript 5.5 RC - TypeScript
                                            • TypeScriptユーザーに贈るGleam入門

                                              最近v1に到達したGleamという静的型付けな関数型言語があります。 GleamはErlangとJavaScriptをターゲットに実行できるため、今TypeScriptを使っている領域でも使うことができます。 この記事ではTypeScriptユーザー向けにGleamの文法を解説していきます。 記事を通してGleamの良さを感じていただければ幸いです。 Gleamの公式サイトでは以下の言語のユーザー向けのチートシートもあるため、この中に知っている言語があるのならそちらを読んでみるのがオススメです。 Elixir Elm Erlang PHP Python Rust また、個人的にGleamの情報をCosense(Scrapbox)にまとめているので、リファレンスがてら覗いてみてください。 organizationとして管理していきたいと考えているので、編集のリクエスト等も歓迎です。 編集した

                                                TypeScriptユーザーに贈るGleam入門
                                              • Next.jsとHono RPCで安全・爆速開発

                                                AVベースはNext.js(Pages Router)のモノリスで作っています。画面から呼び出すAPIには Next.js の API Routes を使っています。API RoutesはHTTPメソッドを自分でハンドルする必要があったり、エラーハンドリングを各ファイルごとに行う必要があったりと、そのまま使うにはあまり便利ではありません。 そこでAPI RoutesでHonoを使うことにしました。Honoは高速かつ様々なランタイムで動作することで人気ですが、型推論を利用した RPC 機能も搭載しています。RPCによってサーバー・クライアント間の型が接続されたことで、画像のような快適な開発が可能になりました 左がサーバー側、右がクライアント側のコード。サーバー側のリファクタリングがクライアントにも反映される様子(リクエスト・レスポンスともに message というフィールドを text に置

                                                  Next.jsとHono RPCで安全・爆速開発
                                                • Typia Guide Documents - Index

                                                  Super-fast Runtime Validatortypia.assert<T>(input); 20,000x faster than class-validator. Stable than any others, and only one supporting complicate union type. In the backend server side, it boosts up performance about 10x up. Fast JSON Serializationtypia.json.stringify<T>(input); 200x faster than class-transformer. Also supports type safe JSON parser, and JSON schema generator. In the backend ser

                                                    Typia Guide Documents - Index
                                                  • WebAssembly・PWAの習作アプリを作成して感じたこと

                                                    はじめに この記事では、個人の習作としてwasm-image-resizerという簡易な画像リサイズ・フォーマット変換ツールをWebAssembly + PWA + Reactで作成したので、そのときに私の得た知見を記載したいと思います。 アプリとしては実に単純であんまり面白みもないのですが、半ばちょっとした好奇心と勢いで自分なりに作ってみました。手探りで拙いですが、ソースコードは以下に配布していますので、よかったら見てみてください。 アプリの技術目標 このアプリを通して私が考えた技術目標は以下のとおりです。 フロントエンドとしては言語はTypeScript、Viteをベースにする UIのフレームワークとしてReactを使用 画像変換などのアプリでやりたいコアな処理はRustで記述 wasm-bindgenとwasm-packでWebAssembly化・javascriptパッケージ化を行

                                                      WebAssembly・PWAの習作アプリを作成して感じたこと
                                                    • How We Made the Deno Language Server Ten Times Faster

                                                      Programming should be simple, which is why we built Deno to be “batteries included” with all-in-one tooling, native TypeScript support, and web standards APIs. (You can get started with TypeScript just by naming a file with a .ts extension.) One major way Deno boosts productivity is through our language server, which offers auto-completion, tooltips, linting, code formatting, and more. Recently, a

                                                        How We Made the Deno Language Server Ten Times Faster
                                                      • エフェクトとジェネレーターと - Object.create(null)

                                                        2 年前に作って放置していたライブラリを最近ちょっと整理したのでその話. エフェクト プログラム中に登場する関数のことを考えてみましょう. 関数は引数を与えるとなんらかの計算を行い, 戻り値を返してくれます. もし関数が純粋な (数学的な意味での) 関数であれば, 関数の入出力は引数と戻り値だけです. つまり, 引数以外の入力 (例えば時刻) によって出力が変わることもなければ, 戻り値以外の出力 (例えば光や音) が得られることもありません. 一方で実用的な価値のあるプログラムというのは時刻に応じて光や音を発生させるようなものであり, これらは純粋な関数だけを組み合わせていては作ることができません. ここで登場する純粋でない関数は, 計算の過程でなんらかのエフェクトを発生させて, 引数と戻り値以外の入出力 (副作用) を行います. エフェクトの明示と副作用の分離 関数が発生させるエフェク

                                                          エフェクトとジェネレーターと - Object.create(null)
                                                        • ESLint v9 Support · Issue #8211 · typescript-eslint/typescript-eslint

                                                          Edit (JoshuaKGoldberg, May 12th): now that #9002 is merged, the v8 versions of typescript-eslint starting with v8.0.0-alpha.10 now support ESLint v9. Hooray! 🙌 If you still have problems with typescript-eslint and ESLint v9: Please make sure you're using typescript-eslint@8.0.0-alpha.10 or newer Go through our issue chooser to file a new issue reporting your problems That issue template includes

                                                            ESLint v9 Support · Issue #8211 · typescript-eslint/typescript-eslint
                                                          • graphql-codegenとzodのz.brandでCustom ScalarのNominal Typingを実現する例

                                                            GraphQLのスキーマで定義したCustom Scalarをgraphql-codegenでTypeScriptの型を生成する際に、zodを使ったNominal Typingの実現例を紹介します。 この記事の内容は以下の記事で記載されている内容をZodを使って実現します。Nominal Typingなどの事前知識については説明しないため、以下の記事を参照ください。 前提 上記記事で定義したGraphQLのCustom Scalarを想定します。

                                                              graphql-codegenとzodのz.brandでCustom ScalarのNominal Typingを実現する例
                                                            • TypeScriptの型システムに命を吹き込む: Typia と unplugin-typia

                                                              TL;DR この度、unplugin-typia という Library を作りました unplugin-typia を使うと今までめんどくさかった Typia の導入が簡単になります Vite、esbuild、webpackなどフロントエンドで主流の様々なbundlerに対応しています Next.jsでも簡単に使えます Bunにも対応しています はじめに 皆さんはTypeScriptでのValidationにはどのような Library を使っていますか? zodはエコシステムが硬いし、最近だとvalibotが流行りつつありますね。 またarktypeも注目に値するLibraryです。 typeboxも耳にする機会が増えてきました。 また個人的には(厳密にはValidatorではないですが)、unknownutilも手に馴染んでよく使っています。 既存のValidation Librar

                                                                TypeScriptの型システムに命を吹き込む: Typia と unplugin-typia
                                                              • jestでもDataProviderが使いたい!

                                                                はじめに jestのテストを書いているうちに、ケースが増えてきて見づらくなってしまったのでPHPUnitのDataProvider的なのを書けないか調べたところあったので備忘録として残しておきます。 テスト対象の関数 下記のような足し算をする関数があるとします。ではこの関数のテストを書いてみましょう! export const addition = ( firstNumber: number, secondNumber: number ): number => { return firstNumber + secondNumber; }; よく書く書き方 test.eachを使う場合はおそらくこういった書き方をすると思います。 しかしこの渡している配列郡をパット見て、どれが何のパラメーターか分かりづらいですよね... そこで今回はPHPUnitのDataProviderみたいな形で書き直し

                                                                  jestでもDataProviderが使いたい!
                                                                • 【AWS SDK for JavaScript v3】DynamoDB操作のあれこれをTypeScriptで理解する

                                                                  この記事で解決すること SDK for JavaScript v3を用いてDynamoDBを操作する時に使用するライブラリの違い @aws-sdk/client-dynamodb: DynamoDBClient @aws-sdk/lib-dynamodb: DynamoDBDocumentClient やりたいこと SDK for JavaScript v3を用いてDynamoDBにデータを挿入するLambda関数コードを書きます。 環境 Lambda Node.js 20 APIGateway, DynamoDB (AWS SAMによるデプロイ、APIGatewayコンソール上からテスト) AWS SDK for JavaScript v3でのDynamoDB操作について AWS SDK for JavaScript v3では、操作したい各リソースごとにライブラリをインストールして使用し

                                                                    【AWS SDK for JavaScript v3】DynamoDB操作のあれこれをTypeScriptで理解する
                                                                  • 【解決】Node.js20系にホットリロード導入しようとしたらめちゃくちゃハマった - Qiita

                                                                    起こったこと Node.js(Express)環境でtypescriptを使ったAPIの開発環境でホットリロードを実装しようとしたところ、めちゃくちゃ詰まった。 最初に試したことはts-nodeとnodemonの組み合わせ。ts-nodeがtsファイルを読み込めず、ずっとエラーを吐いていた。。。 以下、解決した方法と環境 実行環境 Node.js 20.0.0 express 4.19.2 typescript 5.3.3 nodemon 3.1.0 tsx 4.7.2 解決方法 結論、ts-nodeではなく、tsxをnodemonと一緒に利用することで解決した。 package.jsonのstartコマンドを記載するだけ。tsconfig.jsonなど他のファイルの変更は不要。 "scripts": { "test": "echo \"Error: no tes@t specified\

                                                                      【解決】Node.js20系にホットリロード導入しようとしたらめちゃくちゃハマった - Qiita
                                                                    • TypeScriptのあれこれ⑥型ジェネリクス とかextendsって何? | SIOS Tech. Lab

                                                                      始めに 皆さんこんにちは!新卒3年目エンジニアの細川です。 今回はTypeScriptの型ジェネリクスについてまとめていこうと思います。 TypeScriptを書いてて、<T>とかよく見るけど何それ?という方は是非読んでみてください! 型ジェネリクスって? 型ジェネリクスは、型を変数として受け取り、利用するという仕組みです。 皆さんも以下のような<T>とか<K>の記述をよく目にすることがあるかと思います。 type EchoType<T> = T type StringType = EchoType<string> // string型 これが型ジェネリクスです。Tという型変数を受け取り、それを右辺で利用することができます。この例では受け取った型をそのまま代入しているので、渡した型そのままとなります Tの部分は引数の名前なので、なんでもいいのですが、慣例的にTやKなどがよく使われます。 関

                                                                        TypeScriptのあれこれ⑥型ジェネリクス とかextendsって何? | SIOS Tech. Lab
                                                                      • TypeScriptのあれこれ②違う型なのに代入できる!? | SIOS Tech. Lab

                                                                          TypeScriptのあれこれ②違う型なのに代入できる!? | SIOS Tech. Lab
                                                                        • Type Challenges を解く【初級編】 - Qiita

                                                                          はじめに TypeScript の型について、雰囲気でしか理解していない節があるので Type Challenges をやってみることにしました。 とりあえず初級編を解いてみたので、自分の解法と解説を書いていきます。 Type Challenges について TypeScript の型についての問題を集めたリポジトリです。 ありがたいことに日本語対応がされています。 詳しい説明は以下の記事を参照すると良いです。 お試し 初級編の前にお試しの問題があるので、まずはこれを解いて Type Challenges の解き方を理解します。 13・Hello World HelloWorld という型を string 型にするだけの問題です。 コードを書いて確認するために 挑戦する と書かれた青いボタンを押します。 そうすると TS Playground が開き、問題文・解答用コード・テストコードが書

                                                                            Type Challenges を解く【初級編】 - Qiita
                                                                          • TypeScript 非同期処理 Promise や Fetch の使い方

                                                                            TypeScript 非同期処理 Promise と Fetch Promise や async 関数(async/await)で型注釈する方法や TypeScript を使用して fetch を利用する方法などについての解説のような覚書です。 JavaScript の Promise(概要) JavaScript の Promise は非同期処理を扱うための Promise オブジェクトとその仕組みのことです。Promise を使うことで非同期処理をその仕様に従って統一された書き方で扱うことができます。 以下は JavaScript の Promise の概要です。 コンストラクタ Promise は new と コンストラクタ関数 Promise() で promise オブジェクトのインスタンスを作成して利用することができます。 コンストラクタ Promise() は引数に reso

                                                                            • TypeScript 5.5リリース!多数の新機能や変更を見逃すな!

                                                                              6月21日、マイクロソフトはJavaScriptを基にした言語、TypeScriptの新バージョン5.5を公開した。 以下のような多数の新機能と改善が含まれており、注目に値するアップデートだ。 推論される型述語 定数インデックスアクセスの制御フローの絞り込み JSDoc @import タグ 正規表現の構文チェック 新しいECMAScript Setメソッドのサポート 分離された宣言 設定ファイル用の ${configDir} テンプレート変数 package.jsonの依存関係を参照して宣言ファイルを生成する機能 以下に、新機能の中でも特に注目すべきトピックについて軽く紹介する。 詳細を知りたい方は、Announcing TypeScript 5.5を参照していただきたい。 型述語の推論が可能に TypeScript 5.5では、filter関数などで型述語が推論されるようになった。これ

                                                                                TypeScript 5.5リリース!多数の新機能や変更を見逃すな!
                                                                              • Goで簡単にTUI!Bubble Teaのススメ(アーキテクチャ編)

                                                                                Bubble Teaとは Bubble Teaは、Text User Interface(TUI)を作成するためのGo言語のライブラリ(フレームワーク)です。 以下のようなCLIアプリケーションを、比較的簡単に作成できます。 Bubble TeaのGitHubリポジトリより引用 Bubble Teaはフレームワーク的な部分があるため、アーキテクチャを理解することが重要です。 (理解しないと使えません。) この記事では、Bubble Teaのアーキテクチャについて紹介します。 Elmアーキテクチャ Bubble Teaの中心となる考え方は、Elmアーキテクチャに基づいています。 Elmアーキテクチャは、Elmという関数型のAltJS言語で考案された、Webフロントエンドのアーキテクチャです。 Elmアーキテクチャは、以下の3つの要素から構成されます。 Model: アプリケーションの状態を表

                                                                                  Goで簡単にTUI!Bubble Teaのススメ(アーキテクチャ編)
                                                                                • TypeScriptではリテラルの型指定にはキャストではなくsatisfiese演算子を使う - mrk21::blog {}

                                                                                  よく以下のように、キャスト{} as Tを使ってリテラルに型指定をしているコードを見る。 type User = { id: string; name: string; }; const value1 = { user: {} as User, }; しかし、このコードは型安全ではなく、存在しないプロパティがある場合や必要なプロパティが不足している場合であってもエラーにならない。そのため嘘の型情報を付与してしまい、実質的に型安全でなくなる。 これを防ぐために以前はliteralという簡単なヘルパー関数を作って対応していた。 type User = { id: string; name: string; }; function literal<T>(value: T): T { return value; } const value2 = { user: literal<User>({ id

                                                                                    TypeScriptではリテラルの型指定にはキャストではなくsatisfiese演算子を使う - mrk21::blog {}