Closed12
ECMAScript 2022 に入る予定の提案ら
ECMAScript 2022 に入ることが決まった(Stage 4 になった)プロポーザルについて雑にまとめていく。随時更新する。
Private Methods
class Counter {
#count = 0;
get #count() {
return this.#count;
}
set #count(value) {
this.#count = value;
}
#foo() {}
}
RegExp Match Indices
const re1 = /a+(?<Z>z)?/d;
const s1 = "xaaaz";
const m1 = re1.exec(s1);
m1.indices[0][0] === 1;
m1.indices[0][1] === 5;
s1.slice(...m1.indices[0]) === "aaaz";
Ergonomic brand checks for private fields
class Foo {
#brand;
static isFoo(obj) {
return #brand in obj;
}
}
Error Cause
async function doUploadJob() {
await fetch("https://example.com/upload").catch(err => {
throw new Error("Upload job result failed", { cause: err });
});
}
try {
await doJob();
} catch (e) {
console.log(e);
console.log('Caused by', e.cause);
}
// Error: Upload job result failed
// Caused by TypeError: Failed to fetch
Arbitrary module namespace identifier names
これは TC39 プロセスにおけるプロポーザルではありませんが、構文の変更を伴う仕様の修正なのでここに記載します。
const foo = "foo";
export { foo as "😃 hey hey" };
import { "😃 hey hey" as foo } from "./module.js";
console.log(foo); // foo
このスクラップは2022/07/24にクローズされました