gpt4 book ai didi

typescript - Sequelize 导入有 TypeScript 问题

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:29 24 4
gpt4 key购买 nike

const _ = require('lodash');
const fs = require('fs');
const path = require('path');
const pg = require('pg');
require('pg-parse-float')(pg);

const Sequelize = require('sequelize');

interface ImportedModel {
name: string
}

export function models () {
const dbOptions = {
dialect: 'postgres',
protocol: 'postgres',
logging: false,
// logging: console.log,
dialectOptions: {
ssl: false // TODO: Need to set ssl to true
}
};

const dbUrl = process.env.DB_URL;
const sequelize = new Sequelize(dbUrl, dbOptions);

let db: Object = {};

const modelPath = `${process.cwd()}/models`;
fs.readdirSync(modelPath).forEach((file: String) => {
if (file !== 'index.js' && path.extname(file) === '.js') {
let model: ImportedModel = sequelize.import(path.join(modelPath, file));
db[model.name] = model;
}
});

Object.keys(db).forEach((modelName: String) => {
if ('associate' in db[modelName]) {
db[modelName].associate(db);
}
});

return _.assign(db, {
sequelize: sequelize,
Sequelize: Sequelize
});
}

具体来说,db[model.name] = model; 有一个 Typescript 错误:

[ts] Element implicitly has an 'any' type because type 'Object' has no index signature.

我该如何解决?

最佳答案

通过添加接口(interface)解决:

interface DbModel {
[key: string]: any
}

并将我的代码更改为:

  let db: DbModel = {}

const modelPath = `${process.cwd()}/models`
fs.readdirSync(modelPath).forEach((file: String) => {
if (file !== 'index.js' && path.extname(file) === '.js') {
let model: ImportedModel = sequelize.import(path.join(modelPath, file))
db[model.name] = model
}
})

Object.keys(db).forEach((modelName: string) => {
if ('associate' in db[modelName]) {
db[modelName].associate(db)
}
})

关于typescript - Sequelize 导入有 TypeScript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com