Javascript TypeScript将布尔值转换为字符串

Javascript TypeScript将布尔值转换为字符串,javascript,typescript,typescript2.0,Javascript,Typescript,Typescript2.0,我有以下问题:在以下代码中,我试图检查变量结果是真是假: const result: boolean = await this.sqlConnector.validatePassword (this.userData.getUserId(), validatorContext.recognized.value); // Returns string console.log(typeof(result)); 函数sqlconnector.validateP

我有以下问题:在以下代码中,我试图检查变量结果是真是假:

    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> 

原因是什么?

看起来您被传回了一个字符串值。这应该在返回响应的代码中修复。作为一种临时措施,您可以检查字符串是什么,并以类似的方式使用它。如果已修复,则应在响应时保持

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";
}
最重要的是,我建议将响应返回为Boolean类型,如果这是允许进行简单检查的目的,比如

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

看起来您被传回了一个字符串值。这应该在返回响应的代码中修复。作为一种临时措施,您可以检查字符串是什么,并以类似的方式使用它。如果已修复,则应在响应时保持

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";
}
最重要的是,我建议将响应返回为Boolean类型,如果这是允许进行简单检查的目的,比如

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

那么为什么sqlConnector.validatePassword会返回字符串呢?我不知道:D。我已经将返回值设置为布尔值。看起来是这样的:在这两种情况下都返回新的承诺((res,rej)=>{this.con.query(getResult,(err,result)=>{if(err){rej(false)}else{res(result[0].isSecretCorrect);}}}}),我收到一个字符串。TypeScript类型是编译时类型,而不是运行时类型。因此,将
result
声明为
boolean
并不重要。TypeScript不会转换您的值,因为它只是JavaScript超集。你的应用程序实际上运行的是JS。因此,如果某个函数返回
string
,您将得到一个字符串,尽管TS代码中有
布尔
注释。然后我能找到的唯一答案是
结果[0]。isSecretCorrect
目前实际上是一个
字符串,当它传递到
res
函数时。那么为什么sqlConnector.validatePassword返回字符串呢?我不知道:D。我已经将返回值设置为布尔值。看起来是这样的:在这两种情况下都返回新的承诺((res,rej)=>{this.con.query(getResult,(err,result)=>{if(err){rej(false)}else{res(result[0].isSecretCorrect);}}}}),我收到一个字符串。TypeScript类型是编译时类型,而不是运行时类型。因此,将
result
声明为
boolean
并不重要。TypeScript不会转换您的值,因为它只是JavaScript超集。你的应用程序实际上运行的是JS。因此,如果某个函数返回
string
,您将得到一个字符串,尽管TS代码中有
boolean
注释。然后我能找到的唯一答案是
result[0]。isSecretCorrect
在传递到
res
函数时实际上是一个
string