TypeScript:将布尔值转换为字符串值


74

我有一个非常简单的问题,我无法在TypeScript中将简单的布尔值转换为字符串值

我一直在浏览文档,找不到任何有用的信息。当然,我尝试使用该toString()方法,但似乎并未在bool上实现。


编辑:我几乎没有JavaScript知识,并以C#/ Java背景来到TypeScript。


奇怪的是,本机JSBoolean支持toString
JohnnyHK

看来TypeScript肯定会错过此基本实现。
Ucodia

Answers:


116

这可能是TypeScript中的错误,也可能是明智的设计决定,但是您可以使用以下方法解决该问题:

var myBool: bool = true;
var myString: string = String(myBool);
alert(myString);

在JavaScript中,布尔值会覆盖此toString方法,该方法可用于任何方法Object(JavaScript中的几乎所有内容都继承自Object),因此...

var myString: string = myBool.toString();

...应该是有效的。

还可以解决此问题,但我个人觉得有点讨厌:

var myBool: bool = true;
var myString: string = <string><any> myBool;
alert(myString);

1
这是打字稿公认的错误,显然是计划将固定在下一版本(0.8.2) - typescript.codeplex.com/workitem/362
乔恩

1
的ToString()一定会很好地工作作为2016年(1.6版本)
钢国家

1
标志:boolean = Boolean(“ true”); 如果您需要从字符串转换为布尔值
sandeep talabathula 17-4-21

2
显然,即使对于TS版本2.9.0-dev.20180327 toString()也绝对不起作用!必须在这里使用@Fenton的示例。奇怪但事实。
KidKode

14

对于那些寻求替代方法的人,解决此问题的另一种方法是使用类似于以下内容的模板文字

const booleanVal = true;
const stringBoolean = `${booleanVal}`;

如果您不确定是否要获取布尔值,则这才是真正的优势。尽管在这个问题中我们知道这是一个布尔值,但即使在TypeScript中(如果没有充分利用),也并非总是如此。


11

一种方法是使用三元运算符:

myString = myBool? "true":"false";

1

如果您也必须处理空值,则可以这样做:

stringVar = boolVar===null? "null" : (boolVar?"true":"false");
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.