AArtem UdovichenkoAdd ets2panda
0ee26c4f创建于 2023年10月10日历史提交

Function return type inference is limited

Rule arkts-no-implicit-return-types

Severity: error

ArkTS supports type inference for function return types, but this functionality is currently restricted. In particular, when the expression in the return statement is a call to a function or method whose return value type is omitted, a compile-time error occurs. In case of any such error, specify the return type explicitly.

TypeScript


    // Compile-time error with noImplicitAny
    function f(x: number) {
        if (x <= 0) {
            return x
        }
        return g(x)
    }

    // Compile-time error with noImplicitAny
    function g(x: number) {
        return f(x - 1)
    }

    function doOperation(x: number, y: number) {
        return x + y
    }

    console.log(f(10))
    console.log(doOperation(2, 3))

ArkTS


    // Explicit return type is required:
    function f(x: number) : number {
        if (x <= 0) {
            return x
        }
        return g(x)
    }

    // Return type may be omitted, it is inferred from f's explicit type:
    function g(x: number) {
        return f(x - 1)
    }

    // In this case, return type will be inferred
    function doOperation(x: number, y: number) {
        return x + y
    }

    console.log(f(10))
    console.log(doOperation(2, 3))