javascript - TypeScript 将 bool 值转换为字符串

标签 javascript typescript typescript2.0

我遇到以下问题:在以下代码中,我尝试检查变量结果是 true 还是 false:

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

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

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";
}

最重要的是,如果这是允许简单检查的目的,我建议将响应作为 bool 类型返回。

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

关于javascript - TypeScript 将 bool 值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54410318/

相关文章:

javascript - 从 typescript/javascript 生成的 Google map 显示为灰色框

json - 使用 JSON 和 TypeScript 进行静态类型化

html - 更改选项中文本的颜色

javascript - 当我的输入值总计达到 50 后,如何启用提交按钮?

javascript - 如何从表单中的按钮接收数据?

angular - 深层嵌套组件不显示

angular - 为什么我无法从 AutoMapper (TS) 导入并生成 Require 语句

javascript - 获取两个字符之间的所有字符串的数组(正则表达式 + JavaScript)

javascript - 根据传递的变量动态添加子字段名称

javascript - Angular 2 - 无法从 SignalR 范围访问组件成员/方法