diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts index a74c84770e..07d0f6452b 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts @@ -329,7 +329,7 @@ export class StaticInterpreter { if (lhs.has(strIndex)) { return lhs.get(strIndex) !; } else { - throw new Error(`Invalid map access: [${Array.from(lhs.keys())}] dot ${rhs}`); + return undefined; } } else if (Array.isArray(lhs)) { if (rhs === 'length') { diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts index f6ff0a83c0..3c1ab32600 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts @@ -39,6 +39,9 @@ describe('ngtsc metadata', () => { it('map access works', () => { expect(evaluate('const obj = {a: "test"};', 'obj.a')).toEqual('test'); }); + it('resolves undefined property access', + () => { expect(evaluate('const obj: any = {}', 'obj.bar')).toEqual(undefined); }); + it('function calls work', () => { expect(evaluate(`function foo(bar) { return bar; }`, 'foo("test")')).toEqual('test'); });