Я поместил ваш тестовый пример в Stackblitz , чтобы проверить ваше утверждение о том, что: ", когда я запускаю тестовый пример, он останавливается даже перед запуском тестового примера, потому что нет никаких аргументов (илинедопустимые аргументы) для функции, поэтому она никогда не запускается. "
Я подумал, что это странно, а не то, что я ожидал, поэтому после настройки Stackblitz я вставил консоль.войдите в метод saveToken()
.Если вы нажмете на Консоль (внизу слева от окна теста Жасмин в Stackblitz), вы увидите, что функция действительно вызывается даже в случае, когда параметры не передаются.В настоящее время я закомментировал эти тесты (с «x» в начале теста), но не стесняйтесь удалить x и посмотреть, что я имею в виду.
Typescript действительно жалуется, когда функция вызывается без параметров, и снова, когда она вызывается с неправильным типом, так что, возможно, именно это вы и имели в виду под своим комментарием, но сам JavaScript подходит в обоих случаях,вот почему я предполагаю, что вы хотите проверить это в своем коде.
Я написал новый метод, который является одним из способов подойти к этому, посмотрите saveTokenWithErrorChecking()
в Stackblitz.Это воспроизводится здесь:
saveTokenWithErrorChecking(token: string) {
if(token === undefined) {
console.log('saveTokenWithErrorChecking() executed and throwing an error');
throw new Error('no arguments');
} else if (typeof token !== 'string') {
console.log('saveTokenWithErrorChecking() throws a type error');
throw new Error('token is the wrong type');
} else {
console.log('saveTokenWithErrorChecking() executed with no error');
localStorage.setItem('jwtToken', token);
}
}
Наконец, вы заметите, что я использую угловой API для localStorage вместо прямого вызова объекта окна.:)
Надеюсь, это все поможет.