I don't understand TypeScript's article on [Alternative Pattern](https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern) for mixins. I see that when I execute the code as they have on the website, I get the methods mixed in, but I don't get properties. e.g. [this example](https://www.typescriptlang.org/play?#code/PTAEGEHsBMFNQMaQA4EtbVAMwE6QLagAWALicgM4BcIA7vQHQkCeysFCOqyJANgIYA7AOYNIOYcGiQEFYESHQARpEgBrYPlQAPVIIoNS%20XgGJ%20vErByD%20JVADdYAWmS3L1gLAAobyFABRfgQiUC1dQVBUClB%20UBIcfmhUO0gbXgCAZUQBCgpvBBzogCkAV3xXJV54AG9vUFAAL1AAXlAARgBuOtAAKzLkAAoASlBarwBIJH1IKoZeSGEBgHJS8owloa6veoBfbz2fLz8ASUECkqSROKJ4JX4KWHzC0AzkLktR7u0W0AAGLfqzB%20-323l8YAAKjcIsxICVEDhYLZ4EJIoJ3FggvBaERUMFQlZhOxwdd4LBtGwEJZMGE9NFaMkQiQbqAKPx8PAbByYtFYSUcKA7g9vHoMViXm9kmTtJZBNBiv1%20JUagc-ABBZDIXhA5nwWn6NEkSCkwX3eAFe7Reyofgk3WgIpZWygHAldGoDnefia7UAWR0dIGr3esAANKAANqrCpVAC6mzBXiqJFAWv4zCsP0EsFoEpDwy2UwoM1gcwWAzTGZwDAaCcOfihUUQqN4DhRgmYOKs8D0oD5AqQcCFsCo3iwbqpqFSMR9zH94QoAzgXEc0HARpwVBiHfDRfiJSp4mo2%20YEfjn22iFSFH3h5wBiw4kCwQGA2H6-EI2aAD4L-V6gA8koPSwFSDBEiQAG0IIAAKeBsDgLAAHLsuwb5mh%201ZvJARosGwQwMI%20ODPkQr5crAX6-mM-7-kBIFgXAWB6LAcEoFYLADN0NH1MubZrhuDDYbhrBhlx3HkaGYk0XRoEkOBsCQdBrEISwAAi7CcNwG7oQ8mGCXgwlsOG5EjAAPqZUncTJYGcEilgDIIJS8LwQyWXWNE7O5oCeVsOxAA)

I added the property `z = 1;` to `Jumpable`, create my class, and console.log z, but the value is `undefined`. If instead I used the [Constrained Mixins](https://www.typescriptlang.org/docs/handbook/mixins.html#constrained-mixins) pattern, it works as expected, but I don't particularly care for how that looks and was hoping that I'm doing something wrong with the Alternative Pattern. Does anyone have any guidance?

Code for reference:

```
// Code copied from https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern

// Each mixin is a traditional ES class
class Jumpable {
  z = 1;
  jump() {
    console.log('Jumped');
  }
}

// Including the base
class Sprite {
  x = 0;
  y = 0;
}

// Then you create an interface which merges
// the expected mixins with the same name as your base
interface Sprite extends Jumpable {}
// Apply the mixins into the base class via
// the JS at runtime
applyMixins(Sprite, [Jumpable]);

let player = new Sprite();
console.log(player.z);

// This can live anywhere in your codebase:
function applyMixins(derivedCtor: any, constructors: any[]) {
  constructors.forEach((baseCtor) => {
    Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {
      Object.defineProperty(
        derivedCtor.prototype,
        name,
        Object.getOwnPropertyDescriptor(baseCtor.prototype, name) ||
          Object.create(null)
      );
    });
  });
}

```