Настройка:
Если вы используете код VS (или видите tsconfig.jsonфайл):
Вы должны добавить libсвойство в свой, tsconfig.jsonи тогда ваш редактор будет использовать связанные определения типов машинописного текста, а также предоставит вам intellisense.
Просто добавьте в "lib": ["esnext", "dom"]свой tsconfig.jsonи перезапустите VS Code
{
"compilerOptions": {
// ...
"target": "es5",
"lib": ["esnext", "dom"]
// ...
}
}
Смотрите все tsconfig.jsonварианты здесь .
Если вы используете Visual Studio или MSBuild, включите этот тег:
<TypeScriptLib>esnext, dom</TypeScriptLib>
Посмотреть все параметры компилятора машинописного текста MSBuild и его использование можно здесь .
Проверьте свою работу:
Если вы настроили свой проект на использование встроенных типов и перезапустили редактор, то ваш результирующий тип будет выглядеть так, а не тот, который был anyпри использовании Object.assign:

Обратите внимание на полифиллы и совместимость с более старыми браузерами:
Обратите внимание, что если вы выполняете транспиляцию на ES5 или ниже и ориентируетесь на IE11, вам нужно будет включить полифиллы, потому что компилятор машинописного текста не будет включать полифиллы за вас.
Если вы хотите включить полифиллы (что вам следует), я бы рекомендовал использовать полифиллы core-js.
npm install --save core-js
или
yarn add core-js
Затем в точке входа в вашем приложении (например /src/index.ts) добавьте импорт для core-jsвверху файла:
import 'core-js';
Если вы не используете диспетчер пакетов, вы можете просто вставить следующий полифилл, взятый из MDN, в какое-либо место вашего кода, который запускается до использования вами 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
});
}