Cấu hình:
Nếu bạn đang sử dụng mã VS (hoặc nếu bạn thấy tsconfig.jsontệp):
Bạn nên thêm thuộc libtính vào tsconfig.jsonvà sau đó trình soạn thảo của bạn sẽ sử dụng các định nghĩa kiểu bản thảo được đóng gói và cũng cung cấp cho bạn thông tin.
Chỉ cần thêm mã "lib": ["esnext", "dom"]của bạn tsconfig.jsonvà khởi động lại Mã VS
{
"compilerOptions": {
// ...
"target": "es5",
"lib": ["esnext", "dom"]
// ...
}
}
Xem tất cả các tsconfig.jsontùy chọn ở đây .
Nếu bạn đang sử dụng Visual Studio hoặc MSBuild, hãy bao gồm thẻ này:
<TypeScriptLib>esnext, dom</TypeScriptLib>
Xem tất cả các tùy chọn và cách sử dụng trình biên dịch bản thảo MSBuild tại đây .
Kiểm tra công việc của bạn:
Nếu bạn đã cấu hình dự án của mình để sử dụng các loại tích hợp và khởi động lại trình soạn thảo của mình, thì loại kết quả của bạn sẽ trông như thế này thay vì loại anykhi bạn sử dụng Object.assign:

Lưu ý về polyfill và khả năng tương thích trình duyệt cũ hơn:
Lưu ý rằng nếu bạn đang dịch mã sang ES5 hoặc thấp hơn và đang nhắm mục tiêu IE11, bạn sẽ cần bao gồm các polyfill vì trình biên dịch bản thảo sẽ không bao gồm các polyfill cho bạn.
Nếu bạn muốn bao gồm các polyfill (mà bạn nên) thì tôi khuyên bạn nên sử dụng các polyfill của core-js.
npm install --save core-js
hoặc là
yarn add core-js
Sau đó, trong điểm vào trong ứng dụng của bạn (ví dụ /src/index.ts) thêm nhập core-jsvào ở đầu tệp:
import 'core-js';
Nếu bạn không sử dụng trình quản lý gói thì bạn chỉ có thể dán polyfill sau được lấy từ MDN ở một nơi nào đó trong mã của bạn chạy trước khi sử dụng Object.assign.
if (typeof Object.assign != 'function') {
// Must be writable: true, enumerable: false, configurable: true
Object.defineProperty(Object, "assign", {
value: function assign(target, varArgs) { // .length of function is 2
'use strict';
if (target == null) { // TypeError if undefined or null
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(target);
for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource != null) { // Skip over if undefined or null
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
},
writable: true,
configurable: true
});
}