Проще объяснить вопрос на простом примере
const isNotEmptyString = (str: string|null): boolean => {
if (!str) {
return false;
}
return !!str.length;
};
const getStringLength = (str: string|null): number => {
if (!isNotEmptyString(str)) {
return 0;
}
return str.length; // Qualifier of 'length' is possibly null
};
В "isNotEmptyString()" я проверяю параметр на "null" - если будет "null", то функция вернет ``false``.
В "getStringLength()" я вызываю "isNotEmptyString()" и, если "isNotEmptyString()" вернет true, то логично, что переданный параметр "str" будет не "null". Но TypeScript все равно требует проверку на "null" в методе "getStringLength()".
Можно ли как-то избежать лишнего "if (str)" в "getStringLength()"?