feat: progress
This commit is contained in:
+15
-2
@@ -10,14 +10,27 @@ export type Base<T> = T extends { [shim]: { value: infer U } }
|
||||
export type Fluent<
|
||||
T,
|
||||
Reg extends Registry = DefaultRegistry,
|
||||
> = Base<T> & Methods<T, Reg>;
|
||||
> = Base<T> & Methods<T, Reg> extends infer U
|
||||
? U &
|
||||
Pick<
|
||||
{
|
||||
/**
|
||||
* Immediate casts and conversions to other types.
|
||||
*/
|
||||
to: unknown;
|
||||
|
||||
[K: PropertyKey]: unknown;
|
||||
},
|
||||
keyof U
|
||||
>
|
||||
: never;
|
||||
|
||||
export function makeFluent<const Reg extends Registry>(
|
||||
registry: Reg,
|
||||
) {
|
||||
const fluent = <const T>(value: T) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
||||
const f = { value } as never as Fluent<T, Reg>;
|
||||
const f = { value } as unknown as Fluent<T, Reg>;
|
||||
|
||||
for (const mixin of registry) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
||||
|
||||
Reference in New Issue
Block a user