TypeScript
ミニマム検証のハンズオン
出典: C# LINQ → TypeScript Array methods 翻訳早見表 — Where/Select/GroupBy が filter/map/reduce にどう写るか — ミニマム検証のハンズオン
// TypeScript 側 (ES2024 / Object.groupBy 使用)
const filtered = products.filter(p => p.price >= 1000);
const grouped = Object.groupBy(filtered, p => p.category);
const counts = Object.fromEntries(
Object.entries(grouped).map(([k, v]) => [k, v?.length ?? 0])
);
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「ミニマム検証のハンズオン」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
8 件var names = products .Where(p => p.Price >= 1000) .Select(p => p.Name) .ToList();未収録
俺が TypeScript に出会った朝 — LINQ が見当たらない焦り
#d65472f31257
const names = products .filter(p => p.price >= 1000) .map(p => p.name);未収録
俺が TypeScript に出会った朝 — LINQ が見当たらない焦り
#606a4b394059
// TypeScript: GroupBy 相当を reduce で自前実装 type Product = { category: string; name: string; price: number }; const grouped = products.reduce<Record<string, Product[]>>((acc, p) => { (acc[p.category] ??= []).push(p);未収録
対応 4: GroupBy ↔ reduce or Object.groupBy (★最大の罠)
#ec875f568913
// TypeScript: sort は破壊的・元の products も並び変わる products.sort((a, b) => a.price - b.price); // 元配列を変えたくない場合は spread で新配列を作る const sorted = [...products].sort((a, b) => a.price - b.price);未収録
対応 5: OrderBy ↔ sort (★破壊性の罠)
#d08cd6f4bc39
// TypeScript: reduce は seed なしだと累積型推論で詰まる const total = products.reduce((acc, p) => acc + p.price, 0); // 累積が配列やオブジェクトの場合は明示型が必要 const grouped = products.reduce<Record<string, number>>((acc, p) => {未収録
対応 6: Aggregate ↔ reduce (型推論の罠)
#33e1420c284a
// C# bool hasExpensive = products.Any(p => p.Price >= 10000); bool allInStock = products.All(p => p.Stock > 0);未収録
対応 7: Any / All ↔ some / every
#b3a1ea8fb054
