В машинописном тексте у меня обычно есть переменная с типом:
const variable: { a: string } | { b: number };
Когда я хочу проверить, какую форму имеет переменная, я обычно хочу сделать
if (variable.a !== undefined) {
// do stuff
}
else {
// do stuff
Однако в строгом режиме машинопись выдает ошибку типа variable.a
, поскольку variable
, как известно, не обладает свойством a
.Чтобы обойти это, я обычно использую any
как (variable as any).a !== undefined
.Однако машинопись не рассматривает это как защиту типов и не сужает тип variable
.
Существует ли «правильный» способ сделать эту проверку в машинописи в строгом режиме (безнастраиваемый тип защиты)?
Некоторые примеры, которые я пробовал (которые, к сожалению, также вызывают ошибки типа):
typeof variable.a !== 'undefined'
variable.hasOwnProperty('a')