Ответ довольно прост, вы заявили, что opts
имеет тип NLUAddOpts
ИЛИ NLURunOpts
.Это означает, что вы можете получить доступ только к свойствам, которые являются общими для обоих типов, иначе TS не сможет узнать, существует ли это свойство на самом деле.
Теперь, если NLURunOpts
будет всегда иметь свойство treeify
, а NLUAddOpts
не будет никогда , тогда вы можете сделать следующее:
if ('treeify' in opts) {
// opts is now of 'NLURunOpts' type
}
Вы также можете определить тип защиты:
function isRunOpts(opts: any): opts is NLURunOpts {
return opts.treeify !== undefined;
}
if (isRunOpts(opts)) {
// opts is now of 'NLURunOpts' type
}
В противном случае вы можете сделать следующее:
if((opts as NLURunOpts).treeify) {
}
, который утверждает, что opts
имеет тип NLURunOpts