diff --git a/packages/compiler-cli/src/ngtsc/translator/src/translator.ts b/packages/compiler-cli/src/ngtsc/translator/src/translator.ts index 84c1d926f1..0c40567378 100644 --- a/packages/compiler-cli/src/ngtsc/translator/src/translator.ts +++ b/packages/compiler-cli/src/ngtsc/translator/src/translator.ts @@ -742,9 +742,12 @@ export class TypeTranslatorVisitor implements ExpressionVisitor, TypeVisitor { } visitTypeofExpr(ast: TypeofExpr, context: Context): ts.TypeQueryNode { - let expr = translateExpression( - ast.expr, this.imports, NOOP_DEFAULT_IMPORT_RECORDER, ts.ScriptTarget.ES2015); - return ts.createTypeQueryNode(expr as ts.Identifier); + const typeNode = this.translateExpression(ast.expr, context); + if (!ts.isTypeReferenceNode(typeNode)) { + throw new Error(`The target of a typeof expression must be a type reference, but it was + ${ts.SyntaxKind[typeNode.kind]}`); + } + return ts.createTypeQueryNode(typeNode.typeName); } private translateType(type: Type, context: Context): ts.TypeNode {