コンテンツにスキップ

[TypeScript] 3.3

TypeScript3.3のリリース内容まとめ

Improved behavior for calling union types

NOT NECESSARY EASY

異なるUnion型に共通で所属する型を渡したとき、正しく推論されるようになった。

type Fruit = "apple" | "orange";
type Color = "red" | "orange";

type FruitEater = (fruit: Fruit) => number;
type ColorConsumer = (color: Color) => string;

declare let f: FruitEater | ColorConsumer;

// FruitEater と ColorConsumer の両方に属する"orange"を渡せば number | string と推論されるはず..
f("orange");
// だが互換性がないとエラーになる
// -> error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'FruitEater | ColorConsumer' has no compatible call signatures.
type Fruit = "apple" | "orange";
type Color = "red" | "orange";

type FruitEater = (fruit: Fruit) => number;
type ColorConsumer = (color: Color) => string;

declare let f: FruitEater | ColorConsumer;

// FruitEater と ColorConsumer の両方に属する"orange"を渡せば string | number と推論されるはず..
f("orange");
// エラーにはならず string | number に推論される

FruitColorが以下のケースでも同様の挙動を観測できる。

type Fruit = 1 | string;
type Color = 2 | string;

Incremental file watching for composite projects in --build --watch

HAD BETTER EASY

Project Referencesで使用する--buildと一緒に--watchが機能するようになった。

これまでは2つのフラグを指定しても--watchによる差分ビルドは機能していなかった。
v3.3からそれに対応し、およそ50%~75%のビルド時間削減効果が出ている。