Acornjs: свойство «вызываемый» не существует для типа «узел»
У меня есть следующий код:
const script = `
const john = "893cf9d5-ad70-423c-7ea8-4e0f92d9c79b"
const a = A.solve(john, {input: 1}, 5)
`
const parsedConstructorCaller = acorn.parseExpressionAt(script, 71, { ecmaVersion: 2020 })
if(parsedConstructorCaller.type === 'CallExpression'){
console.log(parsedConstructorCaller.callee)
}
Он отлично работает сам по себе, проблема, с которой я сталкиваюсь, заключается в том, что TypeScript не может найти свойство на acorn.Node. Этот класс встроен в библиотеку и определяется следующим образом:
class Node {
type: string
start: number
end: number
loc?: SourceLocation
sourceFile?: string
range?: [number, number]
constructor(parser: Parser, pos: number, loc?: SourceLocation)
}
Это консольный логparsedConstructorCaller
, где вы можете видеть, что свойство callee может присутствовать наNode
сорт.
Node {
type: 'CallExpression',
start: 71,
end: 99,
callee: Node {
type: 'MemberExpression',
start: 71,
end: 78,
object: Node { type: 'Identifier', start: 71, end: 72, name: 'A' },
property: Node { type: 'Identifier', start: 73, end: 78, name: 'solve' },
computed: false,
optional: false
},
arguments: [
Node { type: 'Identifier', start: 79, end: 83, name: 'john' },
Node {
type: 'ObjectExpression',
start: 85,
end: 95,
properties: [Array]
},
Node { type: 'Literal', start: 97, end: 98, value: 5, raw: '5' }
],
optional: false
}
Я не очень хорошо разбираюсь в ООП и предполагаю, что в расширении класса нет необходимости, потому что TypeScript, скорее всего, не позволит вам помещать данные в этот класс, если он не определен где-то в его структуре, а это означает, что это, скорее всего, неправильное использование с моей стороны, а не неполнота/баг библиотеки. Также это проблема не только сcallee
свойство, это также происходит с другими свойствами fearguments
.
Буду признателен за любые рекомендации по решению этой проблемы.