У меня есть проект Angular 7 с lib = es2015 и target = es2015, компиляцией Angular-CLI и запущенным приложением все в порядке.Однако при запуске модульных тестов с ng test
компилятор Karma или TypeScript сказал мне, что свойство 'padStart' не существует для типа 'String'
27 03 2019 10:40:57.424:INFO [karma-server]: Karma v4.0.1 server started at http://0.0.0.0:9876/
27 03 2019 10:40:57.424:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
27 03 2019 10:40:57.429:INFO [launcher]: Starting browser Chrome
ERROR in node_modules/@azure/storage-blob/lib/utils/utils.common.ts(300,24): error TS2339: Property 'padStart' does not exist on type 'String'.
node_modules/@azure/storage-blob/lib/utils/utils.common.ts(301,26): error TS2339: Property 'padStart' does not exist on type 'string'.
При проверке кодов сбоя, как указано в сообщении об ошибке:
export function padStart(
currentString: string,
targetLength: number,
padString: string = " "
): string {
if (String.prototype.padStart) {
return currentString.padStart(targetLength, padString);
}
...
Я считаю, что последние 2 строки кода выглядят для меня совершенно нормально, так как я понимаю, что padStart определен в es2017, так что программисты библиотеки создали их.Если в tsconfig.json у меня lib = es2017 и target = es2015, компиляция теста ng в порядке.
Мне нравится выяснять причину проблемы, и подозреваемыми являются: Компилятор скриптов типа, KarmaУгловой компилятор или обидные коды.Какой из них вы думаете?