如何在Angular和TypeScript中创建null的布尔值

时间:2017-08-23 15:53:07

标签: angular typescript types casting boolean

免责声明: 问题在于语言的功能,而不仅仅是"我如何..."。请注意,我的代码已经正常工作 - 我只是不理解为什么会这样做

我设计了这样的方法。

public static isSomething(input?: string): boolean {
  if (!input)
    return null !== pickParts1("default")
  return null !== pickParts2(input);
}

private static pickParts1(input: string) string[] { ... }

private static pickParts2(input: string) string[] { ... }

简单地说 - 如果结果是一个数组(是空的或不是),我返回true。如果结果是 undefined null ,我想返回false。上面的代码有效,但我很困惑为什么我不能简单地返回这样的结果。

public static isSomething(input?: string): boolean {
  if (!input)
    return pickParts1("default")
  return pickParts2(input);
}

我之所以希望它能够工作的原因在于它显然是在条件if-part中完成的(就像它在JavaScript中那样)。不知道为什么它不会在这里为我施放 boolean

我尝试按(boolean)as boolean进行投射,但显然TypseScript认为它不是一个有效的语法(好吧,我采取重击和远射)。有没有办法让它发挥作用?

如果有人想知道我为什么要这样做 - 因为我对这种语言感到惊讶和好奇,并希望测试它的极限。

1 个答案:

答案 0 :(得分:0)

如果指定boolean作为返回类型,则编译器希望该值为boolean而不是string[]
如果指定返回类型any,则可以返回任何类型的值,并且适用JS类型强制规则。