diff --git a/packages/core/src/data_sources/model/DataSource.ts b/packages/core/src/data_sources/model/DataSource.ts index 0e3474c1b..07bab3919 100644 --- a/packages/core/src/data_sources/model/DataSource.ts +++ b/packages/core/src/data_sources/model/DataSource.ts @@ -40,7 +40,10 @@ import DataSources from './DataSources'; interface DataSourceOptions extends CombinedModelConstructorOptions<{ em: EditorModel }, DataSource> {} type Record = SingleRecordType; -export default class DataSource extends Model { +export default class DataSource< + DS extends DataSourceType = DataSourceType, + DR extends Record = Record, +> extends Model { transformers: DataSourceTransformers; /** @@ -67,11 +70,13 @@ export default class DataSource exte * @name constructor */ constructor(props: DataSourceProps, opts: DataSourceOptions) { - const pr = { - ...props, - records: [], - } as unknown as DS; - super(pr, opts); + super( + { + ...props, + records: [], + } as unknown as DS, + opts, + ); const { records, transformers } = props; this.transformers = transformers || {}; @@ -123,7 +128,7 @@ export default class DataSource exte * @returns {DataRecord} The added data record. * @name addRecord */ - addRecord(record: Record, opts?: AddOptions) { + addRecord(record: DR, opts?: AddOptions) { return this.records.add(record, opts); } @@ -135,7 +140,7 @@ export default class DataSource exte * @name getRecord */ getRecord(id: string | number) { - return this.records.get(id) as Record | undefined; + return this.records.get(id) as DR | undefined; } /** @@ -173,7 +178,7 @@ export default class DataSource exte * @returns {Array} An array of the added data records. * @name setRecords */ - setRecords(records: Record[]) { + setRecords(records: DR[]) { this.records.reset([], { silent: true }); records.forEach((record) => {