TypeScript:将bool转换为字符串值

Uco*_*dia 52 casting type-conversion typescript

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

我一直漫游文档,我找不到任何有用的东西,当然我试图使用该toString()方法,但它似乎没有在bool上实现.


编辑:我几乎没有JavaScript知识,并且使用C#/ Java背景来到TypeScript.

Fen*_*ton 81

这可能是TypeScript中的错误或者是一个有意识的设计决定,但您可以使用以下方法解决它:

var myBool: bool = true;
var myString: string = String(myBool);
alert(myString);
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,布尔值覆盖了toString任何可用的方法Object(几乎所有JavaScript都继承自的Object),所以......

var myString: string = myBool.toString();
Run Code Online (Sandbox Code Playgroud)

......应该是有效的.

还有另外一项工作,但我个人觉得有点讨厌:

var myBool: bool = true;
var myString: string = <string><any> myBool;
alert(myString);
Run Code Online (Sandbox Code Playgroud)

  • 这是 TypeScript 中公认的错误,显然计划在下一个版本 (0.8.2) 中修复 - http://typescript.codeplex.com/workitem/362 (3认同)
  • 自 2016 年起,toString() 肯定会正常工作(版本 1.6) (3认同)
  • 显然,即使对于 TS 版本 2.9.0-dev.20180327 toString() 也绝对行不通!必须在此处使用@Fenton 的示例才能使其正常工作。奇怪但事实。 (2认同)

Tol*_*lga 6

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

myString = myBool? "true":"false";
Run Code Online (Sandbox Code Playgroud)


Jon*_*ack 5

对于那些寻求替代方法的人,解决此问题的另一种方法是使用模板文字,如下所示:

const booleanVal = true;
const stringBoolean = `${booleanVal}`;
Run Code Online (Sandbox Code Playgroud)

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