Кстати, вы же тут за образовательным контентом. Вот я и пришел поведать историю о TS. Зайду издалека. Вот вы пишете функцию, принимает она строку. Ок. Далее вы находите в закромах MDN инфу, что функцию можно вызывать без скобочек . Например так function myTaggedFunction(str, ...args){}

myTaggedFunctionhello, no brackets! ${123}

Потом вы находите тип такой функции в TS - TemplateStringsArray. Логично. А далее вы написали гигантский тип для SQL, который по входной строке вам выдает агрументы массив агрументов. Даже тесты на такие типы написали, ведь TS типы полны по тьюрингу, вот и state machine вам для решения данной задачи расчехлили

(A few moments later) Вы разочаровываетесь в том, что тип TemplateStringsArray в TS ВСЕГДА! возвращает вам readonly string[] и с этим ничего нельзя сделать.

А потом вы открываете issues на github о данной проблеме и находите то, что какой-то человек нашел как хакнуть тип TemplateStringsArray.Он написал ... JSDoc. Да, по какой-то неведомой причине TS-lsp воспринимает именно JSDoc лучше, чем сам typescript.

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

Кстати, если еще не пробовали - зацените. Думали на проекте использовать, однако не пригодилось. Там есть плагин для TS и колонки в БД автодополняются.

#playwright #pw #labs #ts #typescript #js #javascript @haradkou_sdet