Skip to content

Commit 2c3b384

Browse files
Nkmols-mol
andauthored
fix(types): allow override json function with custom return type (#13694)
* fix(types): allow override to json function with custom return type * fix(types): remove automatic linter changes Co-authored-by: sander-mol <[email protected]>
1 parent 3059bce commit 2c3b384

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

types/lib/model.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2888,6 +2888,7 @@ export abstract class Model<TModelAttributes extends {} = any, TCreationAttribut
28882888
* values gotten from the DB, and apply all custom getters.
28892889
*/
28902890
public toJSON<T extends TModelAttributes>(): T;
2891+
public toJSON(): object;
28912892

28922893
/**
28932894
* Helper method to determine if a instance is "soft deleted". This is

types/test/model.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,22 @@ class FilmModelToJson extends Model<FilmToJson> implements FilmToJson {
215215
}
216216
const film = FilmModelToJson.build();
217217

218+
class FilmModelExtendToJson extends Model<FilmToJson> implements FilmToJson {
219+
id!: number;
220+
name?: string;
221+
222+
public toJSON() {
223+
return { id: this.id }
224+
}
225+
}
226+
const filmOverrideToJson = FilmModelExtendToJson.build();
227+
218228
const result = film.toJSON();
219229
expectTypeOf(result).toEqualTypeOf<FilmToJson>()
220230

221231
type FilmNoNameToJson = Omit<FilmToJson, 'name'>
222232
const resultDerived = film.toJSON<FilmNoNameToJson>();
223-
expectTypeOf(resultDerived).toEqualTypeOf<FilmNoNameToJson>()
233+
expectTypeOf(resultDerived).toEqualTypeOf<FilmNoNameToJson>()
234+
235+
const resultOverrideToJson = filmOverrideToJson.toJSON();
236+
expectTypeOf(resultOverrideToJson).toEqualTypeOf<FilmNoNameToJson>();

0 commit comments

Comments
 (0)