TypeScript this: new () => T параметр с защищенным конструктором - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь заставить пользователей предоставлять все необходимые параметры при создании экземпляров подклассов, не требуя constructor(params: Partial<Subclass>) в каждом подклассе. Следующая система работает, если доступен конструктор publi c, но не когда он защищен.

Базовый класс:

abstract class Message {
    messageType: number = 0;

    (((protected))) constructor() {}

    static construct<T>(this: new () => T, params: Omit<T, 'messageType'>): T {
        return Object.assign(new this(), params);
    }
}

Подкласс:

class MessageExample extends Message {
    field!: number;
}

Пример:

MessageExample.construct({field: 123});

Есть ли способ разрешить передачу MessageExample в construct() с помощью защищенного конструктора (и, возможно, предотвратить передачу абстрактных классов)?

...