TypeScriptのawait/asyncオプションを持つNodeに対してbcryptモジュールを使用しようとしています。 compare
コードは非常に簡単です:ラップされたメソッド(型スクリプト)の戻り値の型式
let compare = util.asyncWrap(bcrypt.compare);
let result = await compare(password, stored);
return result;
私は活字体コンパイラによってそれが言うことを実行すると:
エラーTS2322を:タイプ「{}」「ブール」型に代入できません。
大丈夫ですが、compare
の解決された値がブール値になることはわかりません。問題は、どうすればいいのでしょうか?単に:boolean
をresult
オブジェクトに追加するだけでエラーが移動します。
これは私のasyncWrap
機能である:
export default function asyncWrap(fn) {
return function (...args) {
return new Promise(function (resolve, reject) {
// Assume the callback handler goes at the end of the arguments
args.push(function(err, val) {
// Assume that err is the first argument and value is the second
if (err) {
reject(err);
}
else {
resolve(val);
}
});
fn.apply(fn, args);
});
}
}
私は私がNPMからbcryptののpromifiedバージョンを使用することができることを認識しています、しかし、私はちょうど活字体で出始めているとしたいことに注意すべきですこれがどのように機能するのかを理解する。
問題を'asyncWrap'関数を使って他の関数をラップすることができるということです文字列やオブジェクトなどの型があります。コードを複製せずに、この特定のケースではブール値でなければならないことを伝える方法はわかりません。 –