我正在使用茉莉花编写一些单元测试。如果我使用:
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在这种情况下最终持有数组而不是字符串?
答案 0 :(得分:4)
as string
是一个TypeScript结构,因为它在编译时被删除,所以javascript甚至都不知道它。
toString()
是一种JavaScript方法,它实际上采用前一种方法返回的内容并将其转换为字符串。这不会在编译时删除。
答案 1 :(得分:1)
完全不同的东西。
as String
这是一种类型断言
toString()
这是一个函数调用