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 27 28
|
// @strict: true
// @noEmit: true
// repro #46310
export interface TypegenDisabled {
"@@xstate/typegen": false;
}
export interface TypegenEnabled {
"@@xstate/typegen": true;
}
type ActionFunction<TEvent extends { type: string }> = (event: TEvent) => void;
declare function createMachine<
TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled
>(
config: {
types?: TTypesMeta;
},
implementations: TTypesMeta extends TypegenEnabled
? ActionFunction<{ type: "test" }>
: ActionFunction<{ type: string }>
): void;
createMachine({}, (ev) => {
ev.type; // should be `string`
});
|