免责声明: 问题在于语言的功能,而不仅仅是"我如何..."。请注意,我的代码已经正常工作 - 我只是不理解为什么会这样做。
我设计了这样的方法。
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认为它不是一个有效的语法(好吧,我是采取重击和远射)。有没有办法让它发挥作用?
如果有人想知道我为什么要这样做 - 因为我对这种语言感到惊讶和好奇,并希望测试它的极限。
答案 0 :(得分:0)
如果指定boolean
作为返回类型,则编译器希望该值为boolean
而不是string[]
。
如果指定返回类型any
,则可以返回任何类型的值,并且适用JS类型强制规则。