1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
// @strict: true
type ConstructorOptions<Data> =
& ComponentOptionsProperties<Data>
& ThisType<Instance<Data>>;
interface ComponentOptionsProperties<Data> {
data: Data;
render(): unknown;
}
interface Instance<Data> {
get<K extends keyof Data>(name: K): unknown;
}
declare var Moon: {
<Data>(options?: ConstructorOptions<Data>): Instance<Data>;
};
const r2 = Moon({
data: { msg: "" },
render() {
const h = (x: unknown) => x;
return h(this.get("msg"));
},
});
|