[英]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.