TypeScript 6.0 リリース候補(RC)

2026/03/07 5:21

TypeScript 6.0 リリース候補(RC)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


Summary

TypeScript 6.0 Release Candidate(RC)が発表され、

npm install -D typescript@rc
でインストールできます。これは現在の JavaScript ベースのコンパイラを使用した最後のリリースです。将来のリリース(TS 7.0+)では新しい Go ベースのエンジンに切り替わります。

New features

  • ジェネリック JSX 内の関数式に対する型チェックが改善され、コンテキスト依存メソッドの推論も向上しました。
  • インポートアサーションは
    import()
    呼び出しにも適用されるようになり、Temporal API のタイプ(stage 3)が利用可能です。
  • DOM タイプが拡張されました:
    dom.iterable
    dom.asynciterable
    "lib": ["dom"]
    だけで含まれます。
  • Map/WeakMap に新しい
    getOrInsert
    /
    getOrInsertComputed
    メソッドが esnext ライブラリに追加されました。
  • ES2025 がターゲット/ライブラリオプションとして追加され、
    RegExp.escape
    などのタイプや
    Promise.try
    などの API が導入されました。

Module resolution changes

  • サブパスインポートは
    #/
    で始めることができ、Node 20 の下ではよりシンプルなエイリアス(例:
    "#": "./dist/index.js"
    )を使用できます。
  • --moduleResolution bundler
    --module commonjs
    とともに動作するようになり、以前は
    esnext
    または
    preserve
    が必要でした。

Deprecations & removals

  • 非推奨オプション:
    target: es5
    --downlevelIteration
    moduleResolution node
    amd/umd/systemjs
    baseUrl
    、および
    esModuleInterop=false
  • 削除されたオプション:
    outFile
    、レガシーモジュール構文、および
    asserts
    キーワード。

Migration helpers

  • フラグ
    --stableTypeOrdering
    (デフォルトではオフ)は、TS 6.0 の型順序を TS 7.0 と揃え、移行時のノイズを減らします。

開発者はビルドパイプラインを RC を使用するように更新し、非推奨オプションへの調整と将来のコンパイラ切替に備えることで、新しい言語機能とライブラリサポートを活用できるようにしてください。


このバージョンはキーポイント一覧からすべての項目を保持し、非対応推論を避け、読み手に優しい明確な概要を提供します。

本文

TypeScript 6.0 リリース候補(RC)

本日、TypeScript 6.0 の Release Candidate (RC) を発表できることを嬉しく思います!
RC を使い始めるには次のコマンドを実行してください。

npm install -D typescript@rc

TypeScript 6.0 は特別なリリースです。現行の JavaScript コードベースに基づく最後のバージョンであり、TypeScript 5.9 と将来登場する ネイティブコード 型付き TypeScript 7.0 との橋渡し役を担います。


主なハイライト

機能説明
ジェネリック呼び出しの型チェックジェネリック JSX 式での推論が向上。
import アサーション構文の非推奨化
import ... assert { … }
import ... with { … }
DOM 型の更新最新 Web 標準(Temporal API など)を反映。
コンテキストに敏感な関数アロー式とメソッド構文が一貫して扱われるようになった。
#/
で始まるサブパスインポート
Node.js 20+ の内部エイリアシングを簡素化。
--moduleResolution bundler + --module commonjs多くのプロジェクト向け新しい移行経路。
--stableTypeOrdering フラグTypeScript 6 と 7 の型 ID 順序を揃えてノイズを減らす。
es2025 ターゲット/ライブラリ新しい組み込み型(例:
RegExp.escape
)を追加。
Temporal API サポート完全な型定義が利用可能。
Map の “upsert” メソッド (
getOrInsert
,
getOrInsertComputed
)
よく使われるパターンのヘルパー。
DOM lib が iterable/asynciterable を含む
"dom.iterable"
"dom.asynciterable"
を指定する必要がなくなる。

破壊的変更と非推奨項目

TypeScript 6.0 は 5.9 と完全に互換性がありますが、いくつかのオプションは非推奨化またはデフォルトで変更されています。
現在のリリースでは次を使用して非推奨警告を無視できます。

{
  "compilerOptions": {
    "ignoreDeprecations": "6.0"
  }
}
非推奨 / 変更新しいデフォルト / ガイダンス
target: es5
非推奨。外部コンパイラまたは新しいターゲット(デフォルト es2025)を使用。
--downlevelIteration
もう適用されず、設定するとエラーになる。
--moduleResolution node10
非推奨。
nodenext
または
bundler
に移行。
amd
,
umd
,
systemjs
,
none
モジュール値
削除。ESM(
esnext
)またはバンドラーを使用。
baseUrl
ルックアップルートとして非推奨;パスに直接プレフィックスを追加。
--moduleResolution classic
削除。モダン戦略へ移行。
esModuleInterop: false
,
allowSyntheticDefaultImports: false
常に有効化される。インポートを適宜調整。
alwaysStrict: false
すべてのコードがデフォルトで strict。必要なら明示的に
false
を設定。
outFile
削除。外部バンドラーを使用。
レガシー
module
名前空間構文
namespace
に置き換えられた。
asserts
キーワードのインポート
非推奨。
with
を使用。
/// <reference no-default-lib="true"/>
サポート外;
--noLib
または
--libReplacement
を使用。
コマンドラインでファイルを指定した際に
tsconfig.json
が存在する
エラー(TS5112)。
--ignoreConfig
で回避可能。

よくある移行タスク

  1. 明示的な型設定
    {
      "compilerOptions": { "types": ["node", "jest"] }
    }
    
  2. ルートディレクトリ – 推論されたルートに依存している場合は
    "rootDir": "./src"
    を設定。 |
  3. Strict モード
    strict
    はデフォルトで
    true
    。必要なら明示的に
    false
    に。 |

詳細機能説明

コンテキストに敏感な関数

  • アロー関数はコンテキストからパラメータを推論しますが、メソッド構文には暗黙の
    this
    が存在します。
  • TypeScript 6.0 は実際に
    this
    を使用しないメソッドを 「コンテキストに敏感ではない」 とみなし、一貫した推論を可能にしています。
callIt({
  consume(y) { return y.toFixed(); },
  produce(x: number) { return x * 2; }
}); // ✅ これで動作します

サブパスインポート (
#/
)

Node.js 20+ は

#/
で始まるインポートをサポートしています。
TypeScript は次のように認識します。

{
  "imports": {
    "#": "./dist/index.js",
    "#/*": "./dist/*"
  }
}

これは新しい Node モジュール解決戦略(

nodenext
または
bundler
)と整合性があります。

--stableTypeOrdering

このフラグを使うことで、型 ID の順序が TypeScript 7 と同じになり、宣言ファイル出力の安定化に寄与します。

tsc --stableTypeOrdering

新しい標準ライブラリサポート

機能有効化方法
es2025 ターゲット/ライブラリ
"target": "es2025"
,
"lib": ["es2025"]
Temporal APIすでに利用可能。例:
Temporal.Now.instant()
等。
Map upsert メソッド (
getOrInsert
,
getOrInsertComputed
)
esnext
ライブラリに含まれる。
RegExp.escape
"lib": ["es2025"]
を設定すると利用可能。

ドキュメントとさらに読むべき情報

RC を試してみてください。バグ報告や TypeScript 6.0、そして将来のネイティブプレビュー型付き TypeScript 7.0 に対するフィードバックをお待ちしています。

ハッキング愉快に!
– Daniel Rosenwasser & the TypeScript Team

同じ日のほかのニュース

一覧に戻る →

2026/03/07 6:52

「このCSSは、私が人間であることを証明します。」

## Japanese Translation: (以下に翻訳文を記載します) **著者は、選択的な大文字化、CSS を用いた対象的なケース変換(`text-transform: lowercase`)、慎重に使われる em ダッシュなどの微妙なタイポグラフィック・選択が、ファイルを `tr` でパイプするような鈍い自動化手法よりも優れていると主張しています。大文字化は「最初の傷」として描かれますが、実際には予想ほど痛みを伴わず、必要に応じて単語が大文字で流れ出します。著者は粗末な `cat post.md | tr A‑Z a‑z | sponge post.md` の手法を却下し、よりクリーンな効果を持つ CSS を推奨しています。 em ダッシュは貴重とされますが、作家の真実の自分を露呈させないように隠したままである必要があります。モノスペースフォントはテキストの美学を損なうため拒否されています。小さなスクリプト(`uv run rewrite_font.py`)は文字形態を微調整するための取るべき手段として強調され、意図的に単語を誤字すること(例: “their/there”、 “its/it’s”)がスタイルの一部であると述べられていますが、“Definately?” のような問題のあるペアは避けるとしています。 作家はノーリグ・コーパスを参照し、単語選択を導くとともに、ターゲットとなる単語から「u」を迅速に除去することで手法の精密さを示しています。全体的なトーンは、書くことが外見だけでなく思考・推論・関与を反映するものであると強調しています。 以前の拒否(“No. Not today.”)はスタイリスティックオーバーホールへの抵抗を示しています。次に計画されている変更は、作家自身の自我感覚を変える唯一の真に重要なステップとして描かれています。 技術的読者――特に文書スタイリング、フォント操作、編集ワークフローに関わる人々――に対して、このメッセージは自動変換から離れ、意図的なタイポグラフィック決定へ移行することを奨励し、デザイン標準や編集実務の再構築につながり得ると述べています。

2026/03/07 7:55

**C# の文字列が Dapper で SQL Server インデックスを静かに破壊する理由** Dapper を使って SQL Server データベースへクエリを投げる際、文字列結合や文字列補間(string interpolation)でクエリを作成することはよくあります。 しかし、この一見無害な手法がインデックスの性能を黙って破壊してしまうケースがあります。 --- ## なぜ起きるのか 1. **暗黙の型変換** `string` と `int`・`bool` など非文字列型を結合すると、SQL Server は列値を `nvarchar` に変換せざるを得ません。 2. **インデックス回避** この暗黙変換により最適化器は既存の数値や日付インデックスを利用できず、フルテーブルスキャンが発生します。 --- ## 問題を引き起こす典型的なパターン | パターン | 何をしているか | インデックスへの影響 | |---------|-----------------|----------------------| | `WHERE Id = " + id`(文字列結合) | `Id` 列を `nvarchar` に変換 | フルスキャン | | `$"SELECT * FROM Users WHERE IsActive = {isActive}"`(補間) | ブール値も同様に `nvarchar` へ変換 | フルスキャン | | `WHERE CreatedDate >= @date.ToString()` | 日付を文字列へ変換 | インデックスが失われる | --- ## 修正方法 1. **インライン値ではなくパラメータを使用する** ```csharp var sql = "SELECT * FROM Users WHERE Id = @Id"; connection.Query<User>(sql, new { Id = id }); ``` 2. **型の一貫性を保つ** 列が期待する正確な型(`int`、`DateTime` など)で渡す。 3. **C# で暗黙変換を避ける** 必要なら明示的にキャストまたは変換し、安全かつ意図した変換のみ行う。 --- ## 簡易チェックリスト - [ ] Dapper に渡す値は文字列化せず、型付きである。 - [ ] 変数データと SQL フラグメントのインライン結合を行わない。 - [ ] すべてのクエリに `@ParameterName` プレースホルダーを使用する。 これらのガイドラインに従えば、インデックスの整合性を保ちつつクエリを高速かつ効率的に維持できます。

## Japanese Translation: **概要:** .NET/Dapper アプリケーションでは、C# の文字列を `nvarchar(4000)` として渡すと、SQL Server が `varchar` 列に対して暗黙の型変換(implicit conversions)を実行します。これにより、インデックス検索がスキャンに置き換わり、論理読み取り数が単桁から数万に膨らみ、CPU/I/O の使用率が急増します(例:`CONVERT_IMPLICIT(nvarchar(255), [Sales].[ProductCode], 0)`)。 正確性には影響しませんが、実行計画や Query Store の警告で明らかになります。特に `SQL_Latin1_General_CP1_CI_AS` などの照合順序では顕著です。 **修正:** パラメータを ANSI として明示的に宣言し、列サイズと一致させます。 ```csharp var p = new DynamicParameters(); p.Add("productCode", productCode, DbType.AnsiString, size: 100); await conn.QueryFirstOrDefaultAsync<Product>(sql, p); ``` または匿名オブジェクトを使用する場合: ```csharp new { productCode = new DbString { Value = productCode, IsAnsi = true, Length = 100 } } ``` スキーマ変更、インデックス更新、クエリ書き換えは不要です。パフォーマンスの改善は即座に実感できます。 **監査ヒント:** Query Store で `@nvarchar(4000)` を検索し、varchar 列へ文字列を渡す匿名オブジェクトをコード内でスキャンしてください。 **ベストプラクティス:** 将来のリグレッション防止のために、`DbType.AnsiString`(または `IsAnsi = true`)を使用した理由をコメントしておくことが推奨されます。 この簡単な調整でサーバー負荷を低減し、コスト削減とスケールアップが実現します。結果として開発者・ユーザー・広範な .NET/SQL Server コミュニティ全体に恩恵をもたらします。

2026/03/07 6:19

**IPリースの陰影ある世界**

## Japanese Translation: IPリースは、誰もがクリーンで匿名のIPv4アドレスを取得し、ジオロケーションデータを操作できる隠密レンタル市場を生み出しており、IPベースの評判システムの信頼性を損なっています。ブロックを保有し、標準的な地域インターネットレジストリ(RIR)手順外でサブリースすることで、これらのサービスはWHOISトレーサビリティとRIRアカウンタビリティチェーンを迂回します。リース会社は料金を払ってブラックリスト化された範囲を「クリーン」し、ドロップダウンまたはCSVアップロードで任意の住宅または商業ジオロケーションを割り当て、WHOIS国フィールドまで操作することができ、MaxMind、Cloudflare、Googleなどに偽情報を供給します。 主要なVPNおよびプロキシプロバイダー(例:NordVPN、ExpressVPN、CyberGhost、PIA)は、LogicWeb、IPXO、INIZ、IPFoxi、Heficed、AnyIP/IPv4Deals などのリース会社からIPを調達しています。これらのプラットフォームは多くの場合、同じサイトで生IPスペースと完全なプロキシサブスクリプションの両方を販売し、エンドツーエンドの匿名化パイプラインを構築します。一部のプロバイダーは住宅ISPと直接提携してトラフィックを実際の加入者ネットワーク経由でルーティングし、合法的なオペレーターとプロキシとの境界を曖昧にしています。 業界は法的グレイズゾーンで運営されており—IPリースやジオロケーション操作を明示的に禁じる法律がないため—実効性の低い執行とインセンティブの不整合が生じています。リースが拡大するにつれて、インターネットセキュリティの基盤であるIP評判リスト、WHOIS帰属、およびジオロケーションデータベースはさらに侵食され、大規模な位置・所有権・評判の偽装が可能になります。これはユーザー(ボット検出やレート制限での誤検知)とIPベースのセキュリティ決定に依存する企業を脅かし、最終的にはインターネット全体の説明責任と安全性を弱めます。