[英]Typescript / Angular : equivalent of plus operator for boolean type
在打字稿中,我們可以使用以下方法將字符串轉換為數字:
let asText: string = "123";
let asNumerals: number = +asText;
如何為布爾類型實現相同的目標:
let asText: string = "true";
console.log(+asText); // NaN
console.log(typeof asText); // string
let b: boolean = +asText; // does not compile
純JS方法產生正確的結果:
let b: boolean = asText == "true"; // Works as expected but not good enough
但是這個解決方案還不夠好,例如:
<component input="true"></component>
@Component()
export class Component {
@Input()
private input: boolean;
ngOnInit() {
console.log(typeof input); // string
}
}
+
運算符為數字執行類型轉換。 至於布爾值,使用虛假和真實的術語來描述強制價值。 可以使用Boolean
內置或!!
執行類型轉換 捷徑; 'false'
和'true'
字符串都是真實的:
true === Boolean('true');
true === !!'false';
由於布爾值可以是true
或false
,因此解析字符串值沒有意義。 考慮到'true'
將轉換為true
而'false'
將轉換為false
,則不清楚將'foo'
字符串轉換為什么 - 對於布爾值沒有NaN
對應物,因為它們是布爾值。
另一個答案提到,特定問題是Angular組件輸入特有的。
input="true"
等於input="{{ true }}"
,這是屬性綁定 ,輸入值將是一個字符串。
雖然[input]="true"
是屬性綁定 ,但輸入值與傳遞給輸入的類型相同。 布爾值將保持布爾值,不需要轉換。
組件中的@input
應該用[]
表示,這應該可以解決您的問題
<component [input]="true"></component>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.