TSKaigi 2025 での発表資料です - スピーカーノート リポジトリ…

TSKaigi 2025 での発表資料です - スピーカーノート リポジトリ…
「型システムの仕組み - TypeScriptで実装しながら学ぶ型とプログラミング言語」という本を書きました。 「型システムの仕組み - TypeScriptで実装しながら学ぶ型とプログラミング言語」 どんな本? 簡単な型チェッカを自作してみることで、型システムの仕組みを概観する本です。 型チェックする対象の言語はTypeScript(のサブセット言語)、型チェッカを実装するための言語もTypeScriptです。 たとえば、次のようなプログラムが型チェックできるようになります。 const add = (x: number, y: number) => { return x + y; } const a = add(1, 2); const b = a + true; 型チェッカは、それぞれの変数がどういう型を持つか管理しつつ、プログラムの各パートがどういう型になるかを判定していきます。
本記事はこちらの改訂版です。コードも改良しています。 三項演算子は本当に読みにくいのか コードをドキュメントのように読みやすくすることは非常に多くのメリットがあります。 そして、プログラミング言語自体にも読みやすくするためだけに存在する構文があります。 その1つが三項演算子です。 いやいや、三項演算子は読みにくいだろう、と思われた方は多いと思います。 しかし、読みやすいケースがあることも私は経験しています。 あなたも経験しているかもしれません。 なぜ、読みやすさに差が出るのか。調べていった結果、ポイントが分かりました。しかし、それを言語仕様として持っているものはありません。 そこで、TypeScript で読みやすい三項演算式を書くためのメソッドを開発したのでご紹介します。 そのメソッドを使った TypeScript のコードは、次のようになります。 Python の条件式(三項演算子)に
JavaScriptプログラマーのためのTypeScript厳選ガイド という本を書きました。JavaScript中級者でTypeScript初心者のプログラマーに向けたTypeScriptの入門書です。 これまで何度かTypeScriptの記事を書いてきました。 TypeScript再入門 ― 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に|ハイクラス転職・求人情報サイト AMBI(アンビ) 「がんばらないTypeScript」のための現実的な設定を考える ─ 4レベルの厳しさを使い分けてTypeScript疲れを克服しよう!|ハイクラス転職・求人情報サイト AMBI(アンビ) 今回の本は、既存のJavaScriptプロジェクトをTypeScriptに移植するという場面を想定した「がんばらないTypeScript」路線ではなく、TypeScri
オープンソースで開発されているJavaScriptランタイム「Bun」の最新版となる「Bun 1.2」正式版が登場しました。 Bun v1.2 is herehttps://t.co/m3Q4xJ7l88 — Bun (@bunjavascript) January 22, 2025 BunはNode.js互換のJavaScriptランタイム機能に加えてTypeScriptのランタイム機能も備え、さらにトランスパイラ、バンドラ、タスクランナー、npm互換のパッケージマネージャなど、JavaScript/TypeScriptのツールチェーンを統合したソフトウェアです。 Windows版、Linux版、macOS版が提供されています。 PostgreSQLクライアント機能を搭載 Bun 1.2ではPostgreSQLのデータベースクライアント機能が搭載されました。ライブラリやSDKに依存するこ
JavaScript: Past, Present, and Future - NDC Porto 2020
Deno Land Inc.は2024年10月9日、同社が開発するJavaScript/TypeScriptランタイム環境Denoの新バージョンDeno 2.0のリリースをアナウンスした。 Announcing Deno 2 4 years after Deno 1.0, the next generation of JavaScript is ready for production at scale. Deno 2 is out today: 🐢 Fully backwards compatible with Node and npm 📦 Package management and node_modules and package.json 📅 Long term supporthttps://t.co/LsV4D4Too8 pic.twitter.com/F6EI3whmX8
「TypeScriptではじめる型システム」という記事をn月刊ラムダノートに寄稿しました。 新刊を発売しました "『n月刊ラムダノート』Vol.4 No.3(2024)発行のお知らせ https://t.co/PGppk1aRRA— lambdanote (@lambdanote) 2024年10月4日 どんな内容? TypeScriptの極小サブセットに対する型検査器を書き、それを通して型システムを体感してみよう、という内容です。 詳しく言うと、boolean型とnumber型と関数型しかないTypeScriptサブセット言語がターゲットです。 型検査器の実装言語にもTypeScript(処理系はDeno)を使います。 TypeScriptづくしの一品です。 わかる人向けに言うと、「型システム入門」という本(通称TAPL)の単純型付きラムダ計算に相当する内容をTypeScriptで説明し
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
「Deno 2」正式リリース、Deno 1/Node.js互換性を保ち、フォーマッタ、リンター、Jupyter Notebook機能など統合。LTS版で企業ニーズにも対応 JavaScript/TypeScriptランタイムのDenoを開発するDeno Landは、Denoの登場以来初となるメジャーバージョンアップ「Deno 2」正式リリースを発表しました。 4 years after Deno 1.0, the next generation of JavaScript is ready for production at scale. Deno 2 is out today: Fully backwards compatible with Node and npm Package management and node_modules and package.json Long ter
ESLint v9 から Flat Config がデフォルトの設定ファイルの形式となり, 徐々に対応しているプラグインも増えて移行が進みつつありますが, 実際に移行したプロジェクトを見ているとしばしば勘違いなどから誤った設定をしている事例を目にします. ということで, Flat Config を書くにあたっていくつか知っておいて欲しいことや, よく見かけるミスをまとめてみました. この記事では網羅的な説明はしませんので, ESLint や typescript-eslint の公式ドキュメントを前提として, 副読本的に参照してください. Getting Started with ESLint - ESLint - Pluggable JavaScript Linter Getting Started | typescript-eslint Flat Config のしくみ Flat Co
WebアプリでURLシェアを実装する際に、URLにすべての情報を持たせてしまいたい場合があります。そのとき、情報をそのままクエリ文字列に渡してしまうとURLの文字数制限に引っかかってしまうかもしれません(厳密にはURLに上限はないようですが、現実はいつもブラウザ実装依存)。 そんなときURLセーフな文字列形式で圧縮してくれるライブラリがあります。lz-sringです。 変換の例 ライブラリで compressToEncodedURIComponent というAPIが提供されているのでこれを使用します。標準のencodeURIComponentでURLセーフな文字列に変換した場合とサイズ比較をしてみましょう。 import lzstring from "lz-string"; const rawData = "Lorem ipsum dolor sit amet, consectetur a
import vitest from "@vitest/eslint-plugin"; export default [ { files: ["tests/**"], // or any other pattern plugins: { vitest }, rules: { ...vitest.configs.recommended.rules, // you can also use vitest.configs.all.rules to enable all rules + // e.g. 'vitest/no-test-return-statement': 'error', + "vitest/max-nested-describe": ["error", { "max": 1 }] // you can also modify rules' behavior using optio
Node.js で型安全な環境変数を扱うスニペットを作りました。 next devのようなアプリケーションの起動、Playwright でのテストなどコマンドごとに渡したい環境変数のセットが異なるケースがあります。 この場合に環境変数をまとめたものを定義して、それをコマンドごとに読み込むセットを変えたいことがあります。 次のようにベタ書きしてもいいのですが、渡したい環境変数が増えると管理が大変になります。 NEXT_PUBLIC_LOCALHOST_URL=http://localhost:3000 NEXT_PUBLIC_API_URL=http://localhost:3001 NEXT_PUBLIC_IS_TEST_MODE=false FOO="bar" next dev そのため、.envのような環境変数をまとめたファイルを使いたくなります。 Node.js は--env-fil
「Porffor」は、JavaScript/TypeScriptをWebAssemblyバイナリやネイティブバイナリへとコンパイルする実験的なツールであり、これまでにない2つの特徴を備えています。 1つ目はJavaScript/TypeScriptをコンパイルしてWebAssemblyバイナリやネイティブバイナリを生成しようとしている点です。 これまでもJavaScript/TypeScriptをWebAssemblyに変換するツールは存在していましたが、JavaScriptのコードとWebAssembly版のJavaScriptエンジンを1つにパッケージングするという手段で実現していました。 実行時には、パッケージ内部のJavaScriptコードをWebAssembly版JavaScriptエンジンで実行していたのです。そのため生成されたバイナリの大きさは比較的大きく、また実行速度はあく
Node.jsの登場は、それまで比較的面倒だったノンブロッキングな非同期のネットワークプログラミングを容易にするAPIと、それをJavaScriptという非常に広く使われているプログラミング言語で利用可能にしたことで、サーバサイドにおけるJavaScriptランタイムという分野を新たに切り開くだけでなく、当時課題となっていたC10K問題の解決など、サーバアプリケーションの開発に大きな影響を与えました。 参考:Node.jsのコンセプトとは? ライアン・ダール氏による東京Node学園祭 基調講演(前編) その上で、Node.jsはAWS Lambdaに代表されるサーバレスコンピューティング環境の基盤として採用され、新たな分散コンピューティング環境の革新にも寄与してきたと言えます。 ライアン・ダール氏の反省:NodeからDenoへ、 しかしNode.jsの開発者であるライアン・ダール氏は201
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く