如何使用 Q.Promise<string> 作为字符串?

How to use Q.Promise<string> as string?

我有函数 returning 字符串 Q.Promise

module test {

    export function promiseString (): Q.Promise<string> {
        var deferred = Q.defer<string>();
        deferred.resolve('someMessage');
        return deferred.promise;
    }

}

如何将 return 值用作字符串?

选项#1:

Q.fcall(promiseString).then(function (message: string) {
    //  compilation error about incompatible parameters     
});

选项#2:

Q.fcall(promiseString).then(function (promise: Q.Promise<string>) {
    console.log(typeof promise);    //  output string
    //  but i can't use promise as string further
});

如果函数总是 returns 承诺(延迟或其他方式),则您不必使用 Q.fcall 调用它。只需致电:

promiseString().then(...)