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 5 years have passed since last update.

Nested import declarations - TC39 Proposals

Posted at
1 / 8

この記事は2019年10月9日に書いたものであり、#tc39_study TC39 Proposals LT 大会で使用したもの。

この機能はまだ未策定かつ変更の可能性が高い。


状況


提案内容

importをtop level以外でも使用できるようにするというもの。
関数内にネスト可能で、スコープは関数内に限定し、同期的宣言。


if (condition) import "./sometimes";

if (condition) {
  import "./sometimes";
}

if (condition) let foo = bar;

Dynamic importとの違い

非同期関数内のみで動作する。

async function main() {
  const hoge = await import('./hoge.js');
  hoge()
}

このDynamic importはすでに現在EdgeやIE以外の主要ブラウザで使用できる。
スクリーンショット 2019-10-09 11.34.50.png


Dynamic importとの関係

Dynamic importのproposal「A new binding form」の部分を読むと記載があるが、2016年7月のTC39 meetingでNested import declarationsの話し合いがあり、そこで当時Stage1にいたDynamic importの前身?であるawait importの提案を待つように言われている。

同期的なimportの提案なので、ブラウザやtop levelのimportとの関係性に問題があるという話などが行われていた。
先ほど記載したようにawait importの提案を待つように言われており、本人は同期宣言を望んでいたが、どうやら叶わなかったらしい。
まだInactive Proposalsに入らず、Stage0に居るので、もしかしたら動くこともあるかもしれない。


最後に

このNested import declarationsを読む前はDynamic importがあり、Stage0から上がらなさそうなのに、なんで読もうとしているのだろうという気持ちだったが。
Dynamic importとの関係性や2016年の話し合いを知れて、おもしろかった。

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?