人能做到解構也返回源對象
import Foo, { bar } from 'foo-with-bar'
然而,類似於可以利用解構的東西,像
let { * as Foo, bar } = getFooBar()
?
假設getFooBar()
和foo-with-bar
模塊返回
{ foo: 1, bar: a => console.log(a) }
和import
/let
後,預計這將打印1
:
bar(Foo.foo)
人能做到解構也返回源對象
import Foo, { bar } from 'foo-with-bar'
然而,類似於可以利用解構的東西,像
let { * as Foo, bar } = getFooBar()
?
假設getFooBar()
和foo-with-bar
模塊返回
{ foo: 1, bar: a => console.log(a) }
和import
/let
後,預計這將打印1
:
bar(Foo.foo)
不,如果你正在解構,你已經在屬性中分裂了對象。但是你可以使用兩個任務:
let Foo = getFooBar();
let { bar } = Foo;
或:
let Foo, { bar } = Foo = getFooBar(); // very questionable and unmaintainable
let Foo = getFooBar(), { var } = Foo; // better
還有一個object rest property proposal帶有實驗性質的transpiler插件,讓你做
let { bar, ...Foo } = getFooBar();
但Foo
將是一個新對象在這裏,並且缺少bar
屬性。
謝謝,我確定'let Foo,{bar} = Foo = getFooBar()' –
不,你不能一起使用命名空間導入命名爲導入(但可以將它與默認導入一起使用)。你將不得不使用兩個單獨的進口申報:
import * as Foo from 'foo-with-bar';
import { bar } from 'foo-with-bar';
我認爲(但不能真正說出),這個問題不是關於進口。他正在尋找一種不存在的各種解構。 –
根據MDN我可以嗎? –
@torazaburo正確。 –
進口申報與解構無關。 – Bergi
對......問題的立場,不管 –
@PeteV。我會做'var bar = fooWithBar.bar',不介意在foo有一個額外的酒吧 –