簡體   English   中英

Typescript / Angular:對於boolean類型,等效於plus運算符

[英]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';

由於布爾值可以是truefalse ,因此解析字符串值沒有意義。 考慮到'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM