I was trying to type annoate a version of the reflect promise method from here - https://stackoverflow.com/a/31424853/1828637
function reflectPromise(p){
    return p.then(data => ({
                data,
                resolved: true
             }))
            .catch(error => ({
                error,
                rejected: true
             }));
}
What it does is takes a promise, and returns another promise when it is resolved or rejected.
The things I'm trying to do with pseudocode:
- Declare that dataistypeof ResolveValue(p)
- Declare that erroristypeof RejectValue(p)
- Declare that others can test const didReject = !!(await (reflectedPromise(somePromise)).rejected(what this will do for resolved promises, which returns{ data: xxx, resolved:true }) is turnundefinedtotrue. Currently when I do!!blah.rejectedTypeScript says to meProperty 'rejected' does not exist on type
This is what I have so far:
function reflectPromise(p: Promise<any>): Promise<
        { data: any, resolved: boolean, rejected: void  } |
        { error: any, resolved: void, rejected: boolean }
    > {
    return p.then(data: any) => ({
                data,
                resolved: true
             }))
            .catch((error: any) => ({
                error,
                rejected: true
             }));
}
 
    