Для нового проекта решили попробовать TypeScript.
Технологии: node.js, express, sequelize.
Есть “стандартный” типовой файл Index.js лежащий в папке с моделями:
import fs = require(‘fs’);
import path = require(‘path’);
import Sequelize = require(‘sequelize’);
import dbConfig from ‘./…/…/configs/db’;
let sequelize = new Sequelize(dbConfig.database, dbConfig.username, dbConfig.password, dbConfig);
let db = {};
fs
.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf(’.’) !== 0) && (file !== ‘Index.js’);
})
.forEach(function(file) {
let model = sequelize.import(path.join(__dirname, file));
//noinspection TypeScriptUnresolvedVariable
db[model.name] = model;
});
Object.keys(db).forEach(function(modelName) {
if (‘associate’ in db[modelName]) {
db[modelName].associate(db);
}
});
//noinspection TypeScriptUnresolvedVariable
db.sequelize = sequelize;
//noinspection TypeScriptUnresolvedVariable
db.Sequelize = Sequelize;
export default db;
На некоторые участки кода TSLint ругается (временно скрыли ошибку с помощью аннотаций), но вот при build ошибки конечно же возникают:
- error TS2339: Property ‘name’ does not exist on type ‘Model<{}, {}>’.
- error TS2339: Property ‘sequelize’ does not exist on type ‘{}’.
- error TS2339: Property ‘Sequelize’ does not exist on type ‘{}’.
Хоть код и рабочий, ошибки нужно победить, так как при разрастании проекта хочется при build видеть реально возникающие проблемы.