reverseMappedTypeLimitedConstraint.ts(5,13): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: 1; }'.
reverseMappedTypeLimitedConstraint.ts(14,3): error TS2353: Object literal may only specify known properties, and 'z' does not exist in type '{ x: number; y: "y"; }'.


==== reverseMappedTypeLimitedConstraint.ts (2 errors) ====
    type XNumber_ = { x: number }
    
    declare function foo_<T extends XNumber_>(props: {[K in keyof T & keyof XNumber_]: T[K]}): T;
    
    foo_({x: 1, y: 'foo'});
                ~
!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: 1; }'.
    
    // -----------------------------------------------------------------------------------------
    
    const checkType_ = <T>() => <U extends T>(value: { [K in keyof U & keyof T]: U[K] }) => value;
    
    const checked_ = checkType_<{x: number, y: string}>()({
      x: 1 as number,
      y: "y",
      z: "z",
      ~
!!! error TS2353: Object literal may only specify known properties, and 'z' does not exist in type '{ x: number; y: "y"; }'.
    });