From 393d351420b3a0d28f4cd1ea8b674fa5d04bfcde Mon Sep 17 00:00:00 2001 From: Tyler Schicke Date: Sun, 21 Apr 2019 23:40:48 -0400 Subject: More fixes --- src/new_fields/Types.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/new_fields/Types.ts') diff --git a/src/new_fields/Types.ts b/src/new_fields/Types.ts index e4d15e276..f4f66fe5c 100644 --- a/src/new_fields/Types.ts +++ b/src/new_fields/Types.ts @@ -1,4 +1,4 @@ -import { Field, Opt, FieldWaiting, FieldValue } from "./Doc"; +import { Field, Opt, FieldWaiting, FieldResult } from "./Doc"; import { List } from "./List"; export type ToType = @@ -6,7 +6,8 @@ export type ToType = T extends "number" ? number : T extends "boolean" ? boolean : T extends ListSpec ? List : - T extends { new(...args: any[]): infer R } ? (R | Promise) : never; + // T extends { new(...args: any[]): infer R } ? (R | Promise) : never; + T extends { new(...args: any[]): infer R } ? R : never; export type ToConstructor = T extends string ? "string" : @@ -35,9 +36,9 @@ export interface Interface { export type FieldCtor = T extends List ? ListSpec : ToConstructor; -export function Cast>(field: Field | FieldWaiting | undefined, ctor: T): FieldValue>; +export function Cast>(field: Field | FieldWaiting | undefined, ctor: T): FieldResult>; export function Cast>(field: Field | FieldWaiting | undefined, ctor: T, defaultVal: ToType): ToType; -export function Cast>(field: Field | FieldWaiting | undefined, ctor: T, defaultVal?: ToType): FieldValue> | undefined { +export function Cast>(field: Field | FieldWaiting | undefined, ctor: T, defaultVal?: ToType): FieldResult> | undefined { if (field instanceof Promise) { return defaultVal === undefined ? field.then(f => Cast(f, ctor) as any) : defaultVal; } @@ -66,6 +67,6 @@ export function FieldValue(field: Opt | Promise>, def export interface PromiseLike { then(callback: (field: Opt | PromiseLike) => void): void; } -export function PromiseValue(field: FieldValue): PromiseLike> { +export function PromiseValue(field: FieldResult): PromiseLike> { return field instanceof Promise ? field : { then(cb: ((field: Opt) => void)) { return cb(field); } }; } \ No newline at end of file -- cgit v1.2.3-70-g09d2