我想將字符串轉換爲布爾值。這樣做有它 一種方式的幾種方法是打字字符串布爾
let input = "true";
let boolVar = (input === 'true');
這裏的問題是,我要驗證輸入,如果它是真的還是假的。而不是驗證第一個輸入,然後做轉換有沒有更優雅的方式? 在.NET中,我們有bool.TryParse
,如果字符串無效,則返回false。在打字稿中是否有任何等同物?
我想將字符串轉換爲布爾值。這樣做有它 一種方式的幾種方法是打字字符串布爾
let input = "true";
let boolVar = (input === 'true');
這裏的問題是,我要驗證輸入,如果它是真的還是假的。而不是驗證第一個輸入,然後做轉換有沒有更優雅的方式? 在.NET中,我們有bool.TryParse
,如果字符串無效,則返回false。在打字稿中是否有任何等同物?
我建議您希望boolVar對於輸入等於true且輸入等於「true」(對於false同樣)爲true,否則它應該是false。
let input = readSomeInput(); // true,"true",false,"false", {}, ...
let boolVar = makeBoolWhateverItIs(input);
function makeBoolWhateverItIs(input) {
if (typeof input == "boolean") {
return input;
} else if typeof input == "string" {
return input == "true";
}
return false;
}
只要字符串不爲空,'Boolean(input)'將始終返回true。所以你基本上只是在做'let boolVar =(input ==='true')',這首先是個問題。即使它按照您期望的方式工作,那麼它仍然不會在false和非布爾型字符串之間產生區別。 – Ivar
這不是真的,因爲布爾(「someOtherString」)將返回false,布爾({})將返回false。所以如果你不確定你的輸入是一個字符串(可以是任何類型),這是一個很好的解決方案。 true ===「true」也是錯誤的,所以你必須確保輸入的類型是String但是它的let,所以它可能是一切。 – MG83
'布爾(「someOtherString」)'將成立。 [試試看](https://jsfiddle.net/gdp0vLvc/)。從這個問題我明白,輸入將始終是一個字符串。正如我所說,即使你是對的,也不會分別檢查解析是否失敗。 – Ivar
你可以做這樣的事情,你可以有三種狀態。 undefined
表示該字符串不是可解析爲布爾:
function convertToBoolean(input: string): boolean | undefined {
try {
return JSON.parse(input);
}
catch (e) {
return undefined;
}
}
console.log(convertToBoolean("true")); // true
console.log(convertToBoolean("false")); // false
console.log(convertToBoolean("invalid")); // undefined
我不知道.NET,但如果'bool.TryParse'返回'的「無效」的字符串FALSE' ......是不是一樣*如果字符串爲「true」,則返回「true」'else'false' * ...?到底你在做什麼? – deceze
如果有人輸入「John」,John不是一個有效的布爾。這並不意味着它是錯誤的。 – pantonis
但是,這不是說你描述的.NET是什麼嗎?我通過它「約翰」,這是無效的,它返回false。我仍然沒有看到區別。 – csmckelvey