//// [tests/cases/conformance/expressions/assignmentOperator/assignmentGenericLookupTypeNarrowing.ts] ////

//// [assignmentGenericLookupTypeNarrowing.ts]
// Repro from #26130

let mappedObject: {[K in "foo"]: null | {x: string}} = {foo: {x: "hello"}};
declare function foo<T>(x: T): null | T;

function bar<K extends "foo">(key: K) {
  const element = foo(mappedObject[key]);
  if (element == null)
    return;
  const x = element.x;
}


//// [assignmentGenericLookupTypeNarrowing.js]
"use strict";
// Repro from #26130
let mappedObject = { foo: { x: "hello" } };
function bar(key) {
    const element = foo(mappedObject[key]);
    if (element == null)
        return;
    const x = element.x;
}
