2

このソース、どこかのプロジェクトでこの種の使用法を見たという漠然とした記憶によると、誰かが次のことを行うことができたかどうか知りたいです:

import {map: { series }} from 'contra'

この分割割り当ての概要で述べたように:

ES6 の import ステートメントは構造化解除と同様に動作しますが、実際には構造化解除ではないことに注意することが重要です。

インポートの動作が少し異なるようで、まったく同じ動作を期待できない可能性がありますが、この状態を確認することはできませんでした。私がやろうとしていることは、公式の ECMAScript 6/7 仕様の一部ですか?

これに答えるために、この懸念を明確にする仕様の部分を含めてください (またはリンクしてください)。

4

2 に答える 2

4

仕様の関連部分はhereです。

ImportDeclarationは_

import ImportClause FromClause ;

ImportClauseを調べると、おなじみの* as Foo、 またはDefaultImport、 または{ImportSpecifier, ...}などであることがわかります。ここで、ImportSpecifierImportBindingであり、これはBindingIdentiferであり、単純な古いIdentifierです。

MDN エントリは、誤解を招くものと完全に間違っているものの間のどこかにあります。それは言うべきだった(そして今言っている):

ES6 の import ステートメントは、表面的には構造化解除に似ていますが、実際にはまったく関係ありません。

最近、MDN で不正確で誤解を招く情報がますます増えています。それは一粒の塩で取られるべきです。正式な参照は仕様です。

于 2016-09-07T17:57:36.963 に答える
0

変数を代入する場合にのみ、構造化代入を使用できます。インポートは完全に異なるものであり、それらで破壊代入を使用することはできません。

代わりに、直接require()呼び出しで分割代入を使用できます (Node.js または RequireJS を使用していると仮定します)。

const {map: { series }} = require('contra')
于 2016-09-07T17:41:50.377 に答える