我正在开发一种可编译为Javascript的类型化编程语言。 现在,我在推断函数的返回类型时遇到了一些麻烦。
我尚未实现并集或交集类型。到目前为止,该语言仅支持基本类型, 用户定义的类/函数类型和泛型(例如Array)。它的语法与Python非常相似,类型系统或多或少相似。
例如,以下代码块的返回类型为number
。
func foo(a: number):
for i = 1, a:
if i <= 10:
return 10
return 11
我可以根据运算符(+-* / ...)和函数类型签名来推断表达式的类型。
但是,如何推断函数的类型,因为它们内部有语句,而if
内的语句可能并不总是返回?
任何帮助表示感谢,谢谢。