2015-02-05 4 views
0

Я пытаюсь использовать Object.assign от ES6, но это всегда undefined. Вот файл, в котором я использую его:Как мне получить Object.assign для работы с полифоном 6to5?

var Dispatcher = require('./dispatcher.js'); 

export default Object.assign(Dispatcher.prototype, { 
    handleViewAction(action) { 
     this.dispatch({ 
      source: 'VIEW_ACTION', 
      action: action 
     }); 
    } 
}); 

А вот gulp задача, я использую для transpile код:

var browserify = require('browserify'); 
var reactify = require('reactify'); 
var source = require('vinyl-source-stream') 
var to5 = require('6to5ify'); 

module.exports = function(gulp, config) { 
    gulp.task('browserify', function() { 
     browserify(config.app.entry, {debug: true}) 
      .add(require.resolve('6to5/polyfill')) 
      .transform(to5) 
      .transform(reactify) 
      .bundle() 
      .pipe(source(config.app.bundleName)) 
      .pipe(gulp.dest(config.app.bundle)); 
    }); 
}; 

Мои Object допустима, но assign является undefined. Что я делаю не так?

ответ

1

Babeljs (ранее 6to5) не преобразует и не полирует Object.assign.

Вам понадобится использовать другую библиотеку полиполков. 2 популярных библиотеки: core-js или object-assign.

С ядро-JS вы могли бы сделать это следующим образом:

require('core-js'); 
Object.assign({}, {a:1}); 

или

var core = require('core-js/library'); 
var result = core.Object.assign({}, {a:1}); 

С объект-назначьте:

var _assign = require('object-assign'); 
var result = _assign({}, {a:1}); 

Но есть, конечно, много других библиотек, которые делают то же самое.