#typescript
Вопрос:
У меня есть эта простая функция, которая берет строку и возвращает ее в регистре заголовка:
const toTitleCase = (str: string = 'test'): string => {
const regex = /^[a-z]{0,1}|sw/gi;
str = str.toLowerCase();
str!.match(regex).forEach((char) => {
str = str.replace(char, char.toUpperCase());
});
return str;
};
Даже с !
помощью in str!.match
, а также значения по умолчанию для параметра я получаю ошибку «Объект, возможно, равен нулю» из TSC в этой строке. Что это дает?
Комментарии:
1. если совпадение не удается, то
str.match()
возвращается значение null, и вызов.forEach
этого параметра недействителен.
Ответ №1:
часть, которая, возможно, равна null str.match(regex)
, так как, если регулярное выражение не находит совпадений, оно возвращает null вместо пустого списка, поэтому вы, вероятно, захотите это сделать:
(str.match(regex) ?? []).forEach(...)
Это указывает на то, что если совпадение undefined
или null
затем используется пустой список, хотя ваше регулярное выражение настроено так, чтобы оно всегда совпадало с началом строки, поэтому вместо этого вы можете просто использовать утверждение:
str.match(regex)!.forEach(...)