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

Use class instead of a type with call signature

Rule arkts-no-call-signatures

Severity: error

ArkTS does not support call signatures in object types. Use classes instead.

TypeScript


    type DescribableFunction = {
        description: string
        (someArg: number): string // call signature
    }

    function doSomething(fn: DescribableFunction): void {
        console.log(fn.description + " returned " + fn(6))
    }

ArkTS


    class DescribableFunction {
        description: string
        public invoke(someArg: number): string {
            return someArg.toString()
        }
        constructor() {
            this.description = "desc"
        }
    }

    function doSomething(fn: DescribableFunction): void {
        console.log(fn.description + " returned " + fn.invoke(6))
    }

    doSomething(new DescribableFunction())

See also

  • Recipe 015: Use class instead of a type with constructor signature (arkts-no-ctor-signatures-type)