Frontend Weekly 2024-10-18
New ECMAScript Stage 4 Proposals、CSS nesting improves with CSSNestedDeclarations、.ioドメイン消滅の可能性について
New ECMAScript Stage 4 Proposals
2024年10月12日のTC39ミーティングで、Promise.try
、Import Attributes
、RegExp Modifiers
、Sync Iterator helpers
、JSON Modules
がStage 4になった。
https://ecmascript-daily.github.io/ecmascript/2024/10/12/ecmascript-proposal-update
Sync Iterator helpers
これによりイテレータを操作するためのヘルパー関数が多く追加される。
https://github.com/tc39/proposal-iterator-helpers
次のようにArray相当の記述が可能になる。
Iterators | Array |
---|---|
map(fn) | map(fn) |
filter(fn) | filter(fn) |
take(n) | slice(0, n) |
drop(n) | slice(n) |
flatMap(fn) | flatMap(fn) |
reduce(fn, init) | reduce(fn, init) |
toArray() | |
forEach(fn) | forEach(fn) |
some(fn) | some(fn) |
every(fn) | every(fn) |
find(fn) | find(fn) |
from(iter) |
Promise.try
Promise.tryは、渡された関数を実行し、その結果をPromiseでラップして返す。
Primise.try(func());
Promise.tryを利用することで任意の関数をPromiseのセマンティクスで扱うことができる。 以下のコードに似た動作をする。
new Promise((resolve, reject) => {
try {
resolve(func());
} catch (error) {
reject(error);
}
});
Import Attributes及びJSON Modules
Import AttributesはJSONやCSS、WASMなど追加のモジュールを読み込めるようにすることを目的にしている。
import json from "./foo.json" with { type: "json" };
合わせて、JSONモジュールのプロポーザルもStage 4になった。
https://github.com/tc39/proposal-json-modules
既にJSONの読み込みについては、Firefoxを除くモダンブラウザだけでなくNode.jsやDeno、Bunなどでも利用可能。
RegExp Modifiers
RegExp Modifiersを利用すると、次のように正規表現のフラグを一部変更することが出来る。
const re1 = /^[a-z](?-i:[a-z])$/i;
re1.test("ab"); // true
re1.test("Ab"); // true
re1.test("aB"); // false
const re2 = /^(?i:[a-z])[a-z]$/;
re2.test("ab"); // true
re2.test("Ab"); // true
re2.test("aB"); // false
https://github.com/tc39/proposal-regexp-modifiers
CSS nesting improves with CSSNestedDeclarations
CSS Nestingにおける問題を解決するために、Chrome 130から導入されるCSSNestedDeclarationsについて解説する記事。
https://web.dev/blog/css-nesting-cssnesteddeclarations?hl=en
Chrome 130から宣言のホイスティングが行われなくなるため、宣言がネストしたルールセットの下にあるような記述をしていた場合、壊れる可能性がある。
/* This does not work in Chrome 130 */
#mypopover:popover-open {
@starting-style {
opacity: 0;
scale: 0.5;
}
opacity: 1;
scale: 1;
}
.ioドメイン消滅の可能性について
イギリスの領土返還により、.io
ドメインが消滅するかもしれないという話が出ている。
記事では、ユーゴスラビアに割り当てられていた国別コードトップレベルドメイン(ccTLD)である.yu
や、
ソビエト連邦のccTLDであった.su
を例に挙げ、.io
ドメインが消滅する可能性について考察している。