読者です 読者をやめる 読者になる 読者になる

TypeScript で Argument of type string is not assignable to parameter of type Thenable

TypeScript + bluebirdで以下のエラーが出た。

error TS2345: Argument of type 'string' is not assignable to parameter of type 'Thenable<{}>'.


【追記 2015/08/21】
BlueBirdの定義ファイルを更新したらエラーが出なくなった。
# tsd update --save --overwrite

無理やり Promise を突っ込んだり、
anyを利用する必要はなかった・・・。
【追記終わり】


【追記 2015/07/27】
以下のようにすることでコンパイルできた。

resolve(Promise.resolve(true));

Promise.resolve(true) で Promise を返して、Promiseには Thenable が実装されているから、
コンパイルは通るようになっている。
これでいーのだろーか・・・。
【追記終わり】


コードは以下。

public static getHashedStr(str: string) {
    return new Promise((resolve, reject) => {
        bcrypt.hash(str, 8, function(err, hash) {
	    resolve(hash);
	});
    });
}

resolve(hash) で hash の型が string だからエラーになっている。
以下のように型を any にしてあげればコンパイルは通るようになる。

public static getHashedStr(str: string) {
    return new Promise((resolve, reject) => {
        bcrypt.hash(str, 8, function(err, hash:any) {
	    resolve(hash);
	});
    });
}

これでいーのだろーか・・・。