Fix issue with stampit when using TS to check JavaScript (#27478)

* Fix issue with stampit when using TS to check JavaScript

**Caveat: This has not been tested within a TypeScript library.***  My knowledge of TypeScript is limited, so this has not been tested.  hence, I suggest @lummish and/or @koresar review this PR.

## What it's fixing

Currently I get the following error with the vanilla stampit example below, it applies to the `const Fighter = stampit(Character(...` line and TypeScript highlights the problem across the whole function:

```sh
Expected 0-1 arguments, but got 2
```

Example taken from main stampit example. 
```JavaScript
import stampit from 'stampit';

const Character = stampit({
  props: {
    name: null,
    health: 100,
  },
  init({ name = this.name }) {
    this.name = name;
  },
});

const Fighter = stampit(Character, {
  props: {
    stamina: 100,
  },
  init({ stamina = this.stamina }) {
    this.stamina = stamina;
  },
  methods: {
    fight() {
      console.log(`${this.name} takes a mighty swing!`);
      this.stamina--;
    },
  },
});
```

* Make stampit() more generic

As discussed with @koresar.
This commit is contained in:
Simon Werner
2018-07-24 03:28:08 +12:00
committed by Andy
parent 6798d64a19
commit 3efa86f7a2

View File

@@ -133,13 +133,16 @@ interface Options {
composers?: Composer[];
}
/** Stampit Composable for main stampit() function */
type StampitComposable = stampit.Stamp | Descriptor | Options;
/**
* Return a factory (aka Stamp) function that will produce new objects using the
* prototypes that are passed in or composed.
* @param options Stampit options object containing refs, methods,
* init, props, statics, configurations, and property descriptors.
*/
declare function stampit(options?: Options): stampit.Stamp;
declare function stampit(...composables: StampitComposable[]): stampit.Stamp;
declare namespace stampit {
/**