はじめに
少し前になりますが、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なんていうものがあるんですね。
おわりに
単なる個人的な感想だけになってしまいました。興味ある方は元の投稿を参照されるのが良いかと思います。