Microsoft/TypeScript
Ver no GitHubContextual inference for nested calls that return constructors
Open
#57.747 aberto em 12 de mar. de 2024
Domain: check: Type InferenceHelp WantedPossible Improvement
Métricas do repositório
- Stars
- (48.455 stars)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)
Description
#54813 attempted to make this work, but exposed an underlying bug that caused too many instantiations. Once that bug is fixed, the code in #54813 should be re-applied if possible.
Here's an example of something that should work, but doesn't:
// @strict: true
// @noEmit: true
interface Action<TContext> {
new (ctx: TContext): void;
}
declare class AssignAction<TContext> {
constructor(ctx: TContext);
}
declare function assign<TContext>(
assigner: (ctx: TContext) => void
): {
new (ctx: TContext): AssignAction<TContext>;
}
declare function createMachine<TContext>(config: {
context: TContext;
entry: Action<TContext>;
}): void;
createMachine({
context: { count: 0 },
entry: assign((ctx) => { ctx }),
});
ctx should have type { count: number }, inferred from the context of assign, but doesn't.