Понимание шаблона машинописного текста с помощью MSSQL

#node.js #typescript #node-mssql

Вопрос:

Мне недавно дали это Node.js Проект TypeScript, и я пытаюсь понять, почему первоначальный автор (недоступный для ответа на этот вопрос) использует определенный шаблон для создания пула подключений к базе данных с помощью node-mssql.

В принципе, предлагаемый способ создания пула соединений и подключения (из официальных документов)

 // async/await style:
const pool = new sql.ConnectionPool(config);
const poolConnect = pool.connect();

pool.on('error', err => {
    // ... error handler
});

await poolConnect;
 

Таким образом pool , переменная объявляется и присваивается непосредственно в результате new sql.ConnectionPool(...) , что затем позволяет вызывать pool.close() в конце приложения, которое предлагается

[…] например, если мы запускаем какой-либо инструмент CLI или задание CRON.

Однако автор моего кода делает

 let pool: {
  connect: () => any;
  on: (arg0: string, arg1: (err: any) => void) => void;
  request: () => any;
};
let poolConnect: any;

// then after
pool = new sql.ConnectionPool(config);
poolConnect = pool.connect();

// rest is the same
...
 

Это похоже на ограничение переменной пула только подмножеством ее потенциальных методов (например, я не могу вызывать pool.close() пул, созданный таким образом), но я не могу понять, почему это было бы хорошей идеей.

Примечание: Я вполне уверен, что это не имеет ничего общего с MSSQL или подключением к базе данных в частности и больше связано с машинописным текстом в целом, однако я не могу придумать хороший вариант использования для этого шаблона, что я упускаю?

Комментарии:

1. Я мог бы предположить, что они пытались контролировать побочные эффекты, созданные другими разработчиками, ограничивая то, что было возвращено, или, возможно, в какой-то момент типизация этого метода была плохой, и поэтому им пришлось определить тип на основе наблюдений или документации.

2. @DanielGimenez Спасибо тебе. Я думаю, что ваше второе предположение может быть хорошим предположением, поскольку библиотека MSSQL написана на js, поэтому в ней нет типизаций. Может быть, это способ принудительно ввести текст? Я только что обнаружил, что есть вещь под названием @types/mssql (которую проект не использует, но все еще работает), которая должна обеспечивать такие типы, стандартно ли включать ее в проект машинописи, использующий MSSQL? Следует ли это делать для каждой другой библиотеки js, которую я добавляю?