使用打字稿扩展书架模型会导致错误
Extending bookshelf model with typescript causes error
我在配置文件中像这样实例化了书架:
// irrelevant code omitted
const knex = Knex(knexfile[env]);
const bookshelf = Bookshelf(knex as any);
const { Model } = bookshelf;
export default Model;
export { bookshelf };
这很好用;所有进口解决和出口工作。我创建了一个这样的模型:
import Model from '../config/bookshelf';
class Module extends Model<{id:number}> {
table = 'modules';
get tableName() { return this.table; }
}
但是,我从 TypeScript 收到一个错误,说 Type '{ id: string; }' is missing the following properties from type 'Model<any>': belongsTo, belongsToMany, count, destroy, and 41 more.
似乎 TypeScript 期望我为模型提供的类型必须定义它扩展的模型 class 上的所有方法,但是这似乎与 this Whosebug post and the DefinitelyTyped example 不一致。关于如何在不向我的模型类型中添加所有 40 多种方法的情况下解决这个问题的想法?
提前致谢!
您需要创建一个新的 class 来扩展 bookshelf.Model<class>
:
class Module extends Model<Module> {
table = 'modules';
public id: number = 0;
get tableName() { return this.table; }
}
Though this is rather interresting TypeScript Support
我在配置文件中像这样实例化了书架:
// irrelevant code omitted
const knex = Knex(knexfile[env]);
const bookshelf = Bookshelf(knex as any);
const { Model } = bookshelf;
export default Model;
export { bookshelf };
这很好用;所有进口解决和出口工作。我创建了一个这样的模型:
import Model from '../config/bookshelf';
class Module extends Model<{id:number}> {
table = 'modules';
get tableName() { return this.table; }
}
但是,我从 TypeScript 收到一个错误,说 Type '{ id: string; }' is missing the following properties from type 'Model<any>': belongsTo, belongsToMany, count, destroy, and 41 more.
似乎 TypeScript 期望我为模型提供的类型必须定义它扩展的模型 class 上的所有方法,但是这似乎与 this Whosebug post and the DefinitelyTyped example 不一致。关于如何在不向我的模型类型中添加所有 40 多种方法的情况下解决这个问题的想法?
提前致谢!
您需要创建一个新的 class 来扩展 bookshelf.Model<class>
:
class Module extends Model<Module> {
table = 'modules';
public id: number = 0;
get tableName() { return this.table; }
}
Though this is rather interresting TypeScript Support