繁体   English   中英

TypeScript将布尔值转换为字符串

[英]TypeScript converts boolean to string

我有以下问题:在以下代码中,我试图检查变量结果是否为true或false:

    const result: boolean = await this.sqlConnector.validatePassword
        (this.userData.getUserId(), validatorContext.recognized.value);
    // Returns string
    console.log(typeof(result));

函数sqlconnector.validatePassword也返回一个布尔值。 该函数的标题如下所示:

public validatePassword (userId: string, userInput: string): Promise <boolean> 

但是, typeof(result)函数表示该变量来自字符串类型。 这最终导致以下if语句始终失败的事实。

    // always false because no boolean
    if (result === true) {
        return true;
    } else {

这是什么原因呢?

看起来您正在传递回一个字符串值。 这应该在返回响应的代码中解决。 作为临时措施,您可以检查字符串的含义并以类似方式使用它。 如果固定,则应在响应时保持。

if (typeof result === "string" && result === "true") {
    return true;
} 

您还可以检查响应并进行相应更改。

let result: any = await this.sqlConnector.validatePassword
(this.userData.getUserId(), validatorContext.recognized.value);


if (typeof result === 'string'){
  result = result === "true";
}

最重要的是,尽管我建议让响应以布尔类型返回,但前提是允许像这样的简单检查。

if (result) // as long as result is true
{
  //you will end up here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM