Могу ли я создать typeguard, который утверждает, что определенное свойство существует (или имеет определенный тип) в объекте.
Т.е.
У меня есть интерфейс Foo
:
interface Foo {
bar: string;
baz: number;
buzz?: string;
}
Теперь объект типа Foo
будет иметь необязательное свойство buzz. Как бы я написал функцию, которая утверждает, что гудение существует: то есть
const item: Foo = getFooFromSomewhere();
if (!hasBuzz(item)) return;
const str: string = item.buzz;
Как бы я реализовал hasBuzz()
?. Что-то вроде охраны типа:
function hasBuzz(item: Foo): item.buzz is string {
return typeof item.buzz === 'string'
}
Существует ли что-то подобное?
PS: я понимаю, что могу просто сделать:
const item = getFooFromSomewhere();
if (typeof item.buzz === 'string') return;
const str: string = item.buzz;
Но мой фактическийсценарий использования требует, чтобы у меня была отдельная функция, которая утверждает существование buzz
.