" as string"与toString()

时间:2017-12-05 23:48:18

标签: typescript

我正在使用茉莉花编写一些单元测试。如果我使用:

let arg0 : string = http.put.calls.argsFor(0) as string;
if(arg0.search(...

然后我得到错误arg0.search不是函数。 Intellisense显示arg0是一个数组,而不是预期的字符串。如果我改为使用:

let arg0 : string = http.put.calls.argsFor(0).toString();
if(arg0.search(...

它有效。 Intellisense显示argsFor函数签名具有任何返回类型。调用时,它返回一个数组。

为什么"为字符串"版本不起作用,为什么我没有得到编译错误给定arg0在这种情况下最终持有数组而不是字符串?

2 个答案:

答案 0 :(得分:4)

as string是一个TypeScript结构,因为它在编译时被删除,所以javascript甚至都不知道它。

toString()是一种JavaScript方法,它实际上采用前一种方法返回的内容并将其转换为字符串。这不会在编译时删除。

答案 1 :(得分:1)

完全不同的东西。

as String

这是一种类型断言

toString()

这是一个函数调用