我在谷歌上搜索了一下,发现这与弱类型处理更改有关。有关以下链接的更多详细信息。
https://blogs.msdn.microsoft.com/typescript/2017/06/12/announcing-typescript-2-4-rc/
在此基础上,在
After upgrading TypeScript, Angular controller registration now fails to compile
下面是对实现接口的类的修改。
选项1更好,因为它只是一个类型断言。
选项1
parseRule() {
const ruleString = ' Scope: (Dim1.Attr1 * &Namset1);' +
' Measure.[asdfa] = ddd ;' +
'end scOPe;';
const inputStream = new ANTLRInputStream(ruleString);
const lexObject = new lexer.scopeLexer(inputStream);
const tokenStream = new CommonTokenStream(lexObject);
const parseObject = new parser.scopeParser(tokenStream);
const result = parseObject.file();
const evaluator = new ScopeEvaluator();
const walker = new ParseTreeWalker();
console.log(' type of ' , evaluator);
walker.walk(evaluator as ParseTreeListener, result);
// Parse and execute the code.
console.log(' p :', parseObject);
console.log(' result :', result.text);
}
选项2-涉及重新澄清材料?
import { scopeListener } from './antlrscope/scopeListener';
import { NonGraphScopeContext, NamesetSimpleContext } from './antlrscope/scopeParser';
import { ParseTreeListener } from 'antlr4ts/tree/ParseTreeListener';
export class ScopeEvaluator implements scopeListener {
visitTerminal = () => { };
visitErrorNode = () => { };
enterEveryRule = () => { };
exitEveryRule = () => { };
enterNonGraphScope = function (ctx: NonGraphScopeContext) {
console.log('Tis ', ctx.text);
};
}
如果你觉得这样做不对,请发表评论。我对typescript的理解还不完整。