Ограничение потока для расширения класса путем присвоения методов из обратного вызова - PullRequest
0 голосов
/ 18 октября 2019

Сообщество StackOverflow! Утилита $Subtype<> позволяет делать много странных вещей. Теперь мне нужно избавиться от старой функциональности, используя утилиту $ Super и Generics. Буквально спецификация потока очень краткая, я не смог найти ничего о том, как расширить экземпляр класса новыми методами. Пожалуйста, помогите мне с FlowFix ?.

Я перепробовал много хитростей, но, смотри, я не могу изменить поведение, иначе говоря использование этой функции.

/* @flow */

class MainClass<C> {
    constructor(
        callback: (
            resolve: (result?: any) => void,
            reject: (error?: any) => void
        ) => mixed
    ): void {
        // Contructor things
    }
}

type ExtendedClass<D> = MainClass<D> & {
    resolve(D): void;
    reject(Error): void;
}

export function extended<D>(): ExtendedClass<D> {
    let resolve;
    let reject;
    const main: MainClass<D> = new MainClass((res, rej) => {
        resolve = res;
        reject = rej;
    });

    main.resolve = resolve;
    main.reject = reject;

    return main;
}

Попробуйте этот пример

main.resolve = resolve;
          ^ Cannot assign `resolve` to `main.resolve` because property `resolve` is missing in `MainClass` [1].

    References:

    22:     const main: MainClass<D> = new MainClass((res, rej) => {
                     ^ [1]
...