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
classinstead of a type with constructor signature (arkts-no-ctor-signatures-type)