Я пытаюсь заставить пользователей предоставлять все необходимые параметры при создании экземпляров подклассов, не требуя 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()
с помощью защищенного конструктора (и, возможно, предотвратить передачу абстрактных классов)?