インポート時にデフォルトのエクスポートオブジェクトを破棄できますか?
いいえオブジェクトを変数にインポートした後でのみ、オブジェクトの構造を解除できます。
インポート/エクスポートには、オブジェクトリテラル/オブジェクトパターンとはまったく異なる構文とセマンティクスがあります。唯一の共通点は、中括弧を使用することと、識別子名とコンマのみを使用する簡略表現が区別できないことです。
次のインポート構文は有効なJSですか?
import { foo, bar } from './export-file';
はい。モジュールから2つの名前付きエクスポートをインポートします。これは、結合foo
を宣言し、それがexport-file
から名前foo
の下にエクスポートされた変数を参照してみましょう、と結合bar
を宣言し、それがもとでエクスポートされた変数を参照してみましょう」という意味
import { foo as foo, bar as bar } from './export-file';
の簡略表記ですbar
からexport-file
まで "という名称が付けられています。
次のエクスポート構文(輸出デフォルト)を考えると
export default { foo, bar };
これと上記のインポート機能するのですか?
号何それがないことは、目に見えない変数を宣言したオブジェクト{ foo: foo, bar: bar }
でそれを初期化し、名前default
の下でそれをエクスポートすることです。このモジュールはexport-file
としてインポートされた場合
、名前default
は使用されず、名前foo
とbar
はSyntaxError
につながる発見されることはありません。
import { default as obj } from './export-file';
const {foo: foo, bar: bar} = obj;
// or abbreviated:
import obj from './export-file';
const {foo, bar} = obj;
それともインポート構文を維持し、その代わりという名前の輸出を使用します:あなたのいずれかがデフォルト・エクスポートされたオブジェクトをインポートする必要があり、この問題を解決するには
、私はそこに見える
export { foo as foo, bar as bar };
// or abbreviated:
export { foo, bar };
// or right in the respective declarations:
export const foo = …;
export function bar() { ... }
良い質問が、彼らは 'export default {a、b}'を使います。http://exploringjs.com/es6/ch_modules.html –
誰がそれがうまくいかないと言ったのですか?しかし、私はそれらに同意する、それは動作しません。環境設定を提供したり、デモプロジェクトをどこかで共有できますか? – Bergi
@Bergi:あなたはそうでした:) しかし、この構文の制約が仕様に綴られているのを見ていません。 – sfletche