不要怂,就是干,撸起袖子干!

You need to sign in or sign up before continuing.
Commit 7fba6684 by Ariel Barabas Committed by GitHub

fix(types): specified 'this' for getters and setters in fields (#12370)

1 parent 41237ae1
Showing with 18 additions and 9 deletions
...@@ -1265,7 +1265,7 @@ export interface ModelAttributeColumnReferencesOptions { ...@@ -1265,7 +1265,7 @@ export interface ModelAttributeColumnReferencesOptions {
/** /**
* Column options for the model schema attributes * Column options for the model schema attributes
*/ */
export interface ModelAttributeColumnOptions extends ColumnOptions { export interface ModelAttributeColumnOptions<M extends Model = Model> extends ColumnOptions {
/** /**
* A string or a data type * A string or a data type
*/ */
...@@ -1346,23 +1346,23 @@ export interface ModelAttributeColumnOptions extends ColumnOptions { ...@@ -1346,23 +1346,23 @@ export interface ModelAttributeColumnOptions extends ColumnOptions {
* Provide a custom getter for this column. Use `this.getDataValue(String)` to manipulate the underlying * Provide a custom getter for this column. Use `this.getDataValue(String)` to manipulate the underlying
* values. * values.
*/ */
get?(): unknown; get?(this: M): unknown;
/** /**
* Provide a custom setter for this column. Use `this.setDataValue(String, Value)` to manipulate the * Provide a custom setter for this column. Use `this.setDataValue(String, Value)` to manipulate the
* underlying values. * underlying values.
*/ */
set?(val: unknown): void; set?(this: M, val: unknown): void;
} }
/** /**
* Interface for Attributes provided for a column * Interface for Attributes provided for a column
*/ */
export interface ModelAttributes { export interface ModelAttributes<M extends Model = Model> {
/** /**
* The description of a database column * The description of a database column
*/ */
[name: string]: DataType | ModelAttributeColumnOptions; [name: string]: DataType | ModelAttributeColumnOptions<M>;
} }
/** /**
...@@ -1612,7 +1612,7 @@ export abstract class Model<T = any, T2 = any> extends Hooks { ...@@ -1612,7 +1612,7 @@ export abstract class Model<T = any, T2 = any> extends Hooks {
* string or a type-description object, with the properties described below: * string or a type-description object, with the properties described below:
* @param options These options are merged with the default define options provided to the Sequelize constructor * @param options These options are merged with the default define options provided to the Sequelize constructor
*/ */
public static init<M extends Model = Model>(this: ModelCtor<M>, attributes: ModelAttributes, options: InitOptions<M>): void; public static init<M extends Model = Model>(this: ModelCtor<M>, attributes: ModelAttributes<M>, options: InitOptions<M>): void;
/** /**
* Remove attribute from model definition * Remove attribute from model definition
......
...@@ -29,7 +29,17 @@ MyModel.findOne({ include: ['OtherModelAlias'] }); ...@@ -29,7 +29,17 @@ MyModel.findOne({ include: ['OtherModelAlias'] });
const sequelize = new Sequelize('mysql://user:user@localhost:3306/mydb'); const sequelize = new Sequelize('mysql://user:user@localhost:3306/mydb');
MyModel.init({}, { MyModel.init({
virtual: {
type: new DataTypes.VIRTUAL(DataTypes.BOOLEAN, ['num']),
get() {
return this.getDataValue('num') + 2;
},
set(value: number) {
this.setDataValue('num', value - 2);
}
}
}, {
indexes: [ indexes: [
{ {
fields: ['foo'], fields: ['foo'],
...@@ -71,4 +81,4 @@ UserModel.findCreateFind({ ...@@ -71,4 +81,4 @@ UserModel.findCreateFind({
* Test for primaryKeyAttributes. * Test for primaryKeyAttributes.
*/ */
class TestModel extends Model {}; class TestModel extends Model {};
TestModel.primaryKeyAttributes; TestModel.primaryKeyAttributes;
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!