2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「Announcing TypeScript 4.6 Beta」を読む

Posted at

はじめに

少し前になりますが、TypeScriptのブログで4.6 Betaがアナウンスされました。

個人的に気になるものをメモしてみたいと思います。

Improved Recursion Depth Checks

再帰的な定義の場合にループ検知するのですかね。今までもヒューリスティックに検知していたので、効果としてはスピードアップということのようです。

Indexed Access Inference Improvements

こちらより引用:

interface TypeMap {
    "number": number;
    "string": string;
    "boolean": boolean;
}

type UnionRecord<P extends keyof TypeMap> = { [K in P]:
    {
        kind: K;
        v: TypeMap[K];
        f: (p: TypeMap[K]) => void;
    }
}[P];

function processRecord<K extends keyof TypeMap>(record: UnionRecord<K>) {
    record.f(record.v);
}

processRecord({
    kind: "string",
    v: "hello!",

    // 'val' used to implicitly have the type 'string | number | boolean',
    // but now is correctly inferred to just 'string'.
    f: val => {
        console.log(val.toUpperCase());
    }
})

これは、過去に遭遇したことがあるかもしれません。すぐには思いつきませんが、こういうことをするケースはありそうです。

Control Flow Analysis for Dependent Parameters

こちらより引用:

function func(...args: ["str", string] | ["num", number]) {
    // ...
}

これは、やりたかったことがある記憶です。ただ、ぱっとは思い出せない。結局戻り値を変えたくなったら、function overloadするしかないということですかね。

More Syntax and Binding Errors in JavaScript

TSがJSの領分に入ってきてますね。良いですが。

TypeScript Trace Analyzer

analyze-traceなんていうものがあるんですね。

おわりに

単なる個人的な感想だけになってしまいました。興味ある方は元の投稿を参照されるのが良いかと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?