Yeah
@Yeah

Typescript. Почему bluebird.promisify для fs.unlink все равно требует функцию обратного вызова?

Вопрос знатокам TS

Хотим делать unlink через стандратный fs модуль. Используем bluebird:

import { promisify } from 'bluebird';
await promisify(fs.unlink)(file);


И бам! получаем ошибку, что нужно 2 аргумента, а не один. Так как по какой-то причине TS до сих пор думает, что я должен вызывать unlink с параметрами file и cb:

Error:(25, 27) TS2554:Expected 2 arguments, but got 1.

В конечном итоге закостылил:

import { promisify } from 'bluebird';
const _unlink = promisify(fs.unlink) as any;
await _unlink(file);


Так сработало, но как сделать нормально?
  • Вопрос задан
  • 300 просмотров
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Я бы покурил исходники на предмет того, почему так получается. На крайняк можно хотя бы как-то так:
interface StringToPromise {
    (string): Promise<object>;
}

const _unlink = promisify(fs.unlink) as StringToPromise;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы