2016-09-09 29 views
1

人能做到解構也返回源對象

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) 
+2

進口申報與解構無關。 – Bergi

+0

對......問題的立場,不管 –

+0

@PeteV。我會做'var bar = fooWithBar.bar',不介意在foo有一個額外的酒吧 –

回答

-1

不,如果你正在解構,你已經在屬性中分裂了對象。但是你可以使用兩個任務:

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屬性。

+0

謝謝,我確定'let Foo,{bar} = Foo = getFooBar()' –

0

不,你不能一起使用命名空間導入命名爲導入(但可以將它與默認導入一起使用)。你將不得不使用兩個單獨的進口申報:

import * as Foo from 'foo-with-bar'; 
import { bar } from 'foo-with-bar'; 
+1

我認爲(但不能真正說出),這個問題不是關於進口。他正在尋找一種不存在的各種解構。 –

+0

根據MDN我可以嗎? –

+0

@torazaburo正確。 –