Theo MDN, Object.assign() chưa được hỗ trợ bởi trình duyệt IE và Android. Nếu bạn cài đặt một phiên bản nguyên cảo của 2.1 hoặc cao hơn mặc dù, bạn có thể sử dụng Object Spread thay vì:
let obj = { x: 1, y: "string" };
var newObj = {...obj, z: 3, y: 4}; // { x: number, y: number, z: number }
Nếu bạn không muốn sử dụng nguyên cảo, thì đây là một simple polyfill từ chuyển đổi nguyên cảo của các bên trên vào javascript :
Object.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;
};
var obj = { x: 1, y: "string" };
var newObj = Object.assign({}, obj, { z: 3, y: 4 });
View on Typescript Playground
Nguồn
2017-03-10 14:33:52
Hãy thận trọng với IE. Theo MDN, nó không được hỗ trợ. – lukeatdesignworks
Trình duyệt Android không hỗ trợ tính năng này: http://kangax.github.io/compat-table/es6/#test-Object_static_methods_Object.assign – Chris
Nếu bạn đang sử dụng Angular-CLI, hãy tìm 'poyfills.ts' và bỏ ghi chú mã hỗ trợ IE9-11. – shammelburg