Как лучше организовать конструктор абстрактного класса на TypeScript с возможностью передать либо набор отдельных аргументов, либо объект с этими аргументами для удобства использования?
Да, можно передавать аргументы как набор отдельных значений, так и как объект с этими значениями в TypeScript.
Для организации конструктора абстрактного класса с возможностью передачи аргументов как набор отдельных значений, так и как объект, можно использовать следующий подход:
```typescript
abstract class AbstractClass {
constructor(arg1: string, arg2: number) {
// constructor logic
}
}
// Использование
const instance1 = new AbstractClass('value1', 1);
```
Для возможности передачи аргументов как объекта, можно использовать следующий подход:
```typescript
abstract class AbstractClass {
constructor(args: { arg1: string, arg2: number }) {
// constructor logic
}
}
// Использование
const instance2 = new AbstractClass({ arg1: 'value1', arg2: 1 });
```
Таким образом, вы можете выбрать способ передачи аргументов, который будет наиболее удобен для вашего кода.
<a href="https://qna.habr.com/user/WblCHA" rel="nofollow">WbICHA</a> написал ответ <br/> <pre><code class="javascript">class Sample {
field1: number;
field2: number;
constructor(field1: number, field2: number);
constructor(props: { field1: number; field2: number });
constructor(
...args: [{ field1: number; field2: number }] | [field1: number, field2: number]
) {
if (args.length === 1) {
this.field1 = args[0].field1;
this.field2 = args[0].field2;
} else {
this.field1 = args[0];
this.field2 = args[1];
}
}
}
// Пример создания
new Sample(123, 4555);
new Sample({
field1: 123,
field2: 4555,
});</code></pre>