Как заставить TypeScript увидеть проверку на ненулевое значение, выполненную внутри функции?
- Есть someFunction которая принимает значение типа string
- props.value имеет тип null|undefined|string
- чтобы проверить это дело есть удобный оператор !=.
Но я хочу вынести проверку в отдельную функцию, чтобы было так:

Но в этом случае TypeScript не видит проверку. Можно ли его заставить подтянуть типы? (оператор ! не подойдёт)
Ответы (1 шт):
Автор решения: ThisMan
→ Ссылка
В TS есть способ указать функцию, которая скажет TS, что переменная имеет конкретный тип.
Подробнее
function isDefAndNotNull<T>(test: undefined | null | T): test is T {
return test !== null && test !== undefined;
}
function doSomething(data: string) {
return data;
}
interface Data {
test?: string;
}
const data: Data = {
test: 'test',
}
doSomething(data.test); // тут плохо
if(isDefAndNotNull<string>(data.test)) {
doSomething(data.test); // тут хорошо
}
