Самое простое было бы определить вашу общую функцию вне класса Person
:
import {Table, Column, Model, DataType} from 'sequelize-typescript';
function getDayOfField(field: string, instance: Model<any>) {
let value : Date = instance.getDataValue(field);
return value.getDay();
}
@Table({
timestamps: false,
freezeTableName: true,
schema: 'TEST',
tableName: 'Person'
})
export class Person extends Model<Person> {
@Column({ type: DataType.STRING, primaryKey: true })
ID: string;
@Column(DataType.STRING)
NAME: string;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('START_DATE', this); }})
START_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('END_DATE', this); }})
END_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('MEET_START_DATE', this); }})
MEET_START_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('MEET_END_DATE', this); }})
MEET_END_DATE: Date;
}
(Определение и вызов его как статического метода Person
будет примерно таким же.) Если вы действительно хотите сделать его методом экземпляра, вы можете попробовать привести this
к Person
внутри вашего get
реализации, которые могут работать в зависимости от того, что делает sequelize во время выполнения (я не знаком с этим).