TypeScript 5.1〜5.2:推論の改善
SetterとGetterの型の独立性、およびusing宣言を確認します。
「TypeScript 5.1〜5.2:推論の改善」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。
TypeScript 5.1の概要
TypeScript 5.1(2023年6月リリース)では、setterとgetterの型の独立性、JSX要素型の柔軟性、エディターのリンクカーソル、パフォーマンスの最適化が向上しました。
// npm install typescript@5.1setterとgetterの型の独立性
5.1より前は、setterとgetterで同じ型を使う必要がありました。現在は、getterが返す型をsetterが受け取る型より広くできます。これは値の型を変換するパターンに便利です。
class Temperature {
get celsius(): string { return this._c + "°C"; } // string
set celsius(value: string | number) { // string | number
this._c = Number(value);
}
private _c = 0;
}JSX の子要素としての undefined
TS 5.1 では、React 18 の動作に合わせて、コンポーネントの render 関数から undefined を直接(null に加えて)返せるようになりました。
// TS 5.1+: OK
function Widget(): undefined { return undefined; }
// Before 5.1: had to return null or JSX elementJSX 要素型の柔軟性
新しい JSX.ElementType 制約により、カスタム JSX ファクトリの柔軟性が高まり、React 以外の環境で役立ちます。
// Custom JSX element types supported more naturally in 5.1TypeScript 5.2 の概要
TypeScript 5.2(2023 年 8 月リリース)では、using 宣言(Explicit Resource Management)、デコレーターのメタデータ、配列のコピー用メソッドが導入されました。
// npm install typescript@5.2using 宣言
using は Explicit Resource Management の提案を実装します。リソースがスコープ外に出ると、その [Symbol.dispose]() メソッドが呼び出されます。
// Requires lib: ["es2022", "esnext.disposable"]
function getConnection(): Disposable {
const conn = openDb();
return { [Symbol.dispose]() { conn.close(); } };
}
{
using conn = getConnection();
// conn.close() called automatically at block end
}非同期破棄のための await using
await using は using と同様に動作しますが、非同期の [Symbol.asyncDispose]() メソッドを呼び出すため、非同期のクリーンアップを実行できます。
async function run() {
await using db = await connectDb();
// db[Symbol.asyncDispose]() called on exit
}デコレーターのメタデータ
TS 5.2 は TC39 のデコレーター・メタデータ提案を実装し、デコレーターから Symbol.metadata を通じてメタデータを付加できるようにします。
function meta(value: string) {
return (_: unknown, ctx: DecoratorContext) => {
ctx.metadata[ctx.name] = value;
};
}
@meta("service")
class MyService {}
console.log((MyService as any)[Symbol.metadata]); // { "MyService": "service" }配列のコピー用メソッド
TS 5.2 では、ES2023 で導入された不変な配列操作である Array.prototype.toSorted、toReversed、toSpliced、with の型が追加されました。
const arr = [3, 1, 2];
const sorted = arr.toSorted(); // [1, 2, 3] — new array, arr unchanged
const reversed = arr.toReversed(); // [2, 1, 3]5.2 で tsconfig に Using を追加する
using 宣言を使用するには、tsconfig に esnext.disposable ライブラリを含めます。
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022", "ESNext.Disposable"]
}
}まとめ: TS 5.1-5.2
TS 5.1: getter と setter の型の独立指定、undefined の JSX 戻り値。TS 5.2: リソースを自動的にクリーンアップする using 宣言、デコレーターのメタデータ、不変な配列コピー用メソッドの型。
理解度チェック
TypeScript 5.2 の using 宣言は何を行いますか?
学んだこと
TS 5.1 では getter と setter の型を独立して指定できるようになり、undefined の JSX 戻り値が導入されました。TS 5.2 では、リソースを自動管理する using 宣言、デコレーターのメタデータ、ES2023 の不変な配列メソッドの型が導入されました。
よくある質問
「TypeScript 5.1〜5.2:推論の改善」レッスンは無料ですか?
はい。「TypeScript 5.1〜5.2:推論の改善」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。
「TypeScript 5.1〜5.2:推論の改善」で何を学びますか?
SetterとGetterの型の独立性、およびusing宣言を確認します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「TypeScript 5.1〜5.2:推論の改善」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- TypeScript 5.0:標準デコレーターとconst型パラメーター
- TypeScript 5.1〜5.2:推論の改善
- TypeScript 5.3〜5.4:新しいナローイングとNoInfer
- TypeScript 5.5以降:Isolated Declarationsとその先