typescript - 使用TypeScript的Spread Operator来在ES5下使用ES6的Object.assign

风影

2018-01-12T04:51:41Z||2018-01-12T04:51:41Z

Object.assign是ES6才支持的,如果想在ES5中使用,可以使用这个实现:
https://github.com/sindresorhus/object-assign

或者也可以使用TypeScript,TypeScript支持Spread operator,然后会把Spread operator转换成ES5支持的形式。

关于Object.assign和Spread operator可以参考这个问题:https://stackoverflow.com/questions/32925460/object-spread-vs-object-assign

Object.assign

options = Object.assign({}, optionsDefault, options);

等效于(使用Spread operator):

options = {...optionsDefault, ...options};

TypeScript会把上面的Spread operator编译成ES5可以运行的代码:

var __assign = (this && this.__assign) || Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
    }
    return t;
};

options = __assign({}, optionsDefault, options);