繁体   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