Announcing TypeScript 4.1 RC
CRANK

Today we are making the Release Candidate (RC) of TypeScript 4.1 available. To get started using the RC, you can get it through NuGet, or use npm with the following command: npm install typescript@rc You can also get editor support by Downloading for Visual Studio 2019/2017 Following directions for Visual Studio Code and Sublime Text.

devblogs.microsoft.com
Related Topics: TypeScript
2 comments
  • TypeScript 4.1RCがでました。幾つかピックアップ

    • Template Literal Types
      • 地味に欲しかった奴だ! ついこないだ、これがないおかげで一部キャストを余儀なくされたのが気になってた。
    • Key Remapping in Mapped Types
      • 既にある型からの動的方生成が捗りますね
    • Checked Indexed Accesses (--noUncheckedIndexedAccess)
      • ついに配列のインデックスアクセスの制限が! これ付けると list[i] の存在チェックが必須になり、より安全になりますね。for–of のときは一々チェックしなくても良いのも素敵。
  • Template Literal TypesとKey Remapping in Mapped Typesを備えたTypeScript 4.1 RCがリリースされました💐

    Template Literal Typesは、文字列から柔軟に型定義ができる便利な機能。

    Key Remapping in Mapped Typesは、mapped typeにTemplate Literal Typesを組み合わせられます。

    どちらもTypeScriptの型表現を超強力にする大型アップデートです✨

    ラーメンとうどんによるサンプルコードを作ってみました。

    https://tsplay.dev/qWJ05N


    type Ramen = ${T}ラーメン;

    type AllRamen = Ramen<"とんこつ🐷">;

    // 「ラーメン」が入ってないのでNG😡
    const foo: AllRamen = "とんこつ🐷";

    // ラーメンが入ってるのでOK🥰
    const bar: AllRamen = "とんこつ🐷ラーメン";

    type FoodFighter = {[P in keyof T & string as ${P}うどんが食べたい]: () => T[P]};

    type UdonMan = FoodFighter<{ごぼてん: string, にく: number}>;

    // 「まる天うどんが食べたい」がNG😡
    const baz: UdonMan = {
    まる天うどんが食べたい: () => "明日",
    にくうどんが食べたい: () => 200_300
    }

    // OK🥰
    const qux: UdonMan = {
    ごぼてんうどんが食べたい: () => "毎日",
    にくうどんが食べたい: () => 200_200
    }