typescript implements的作用和意义到底是什么?

interface Filter {
    rowAddRow: (treeData:Tree[],id:string,filterType:FilterType) =>Tree[]
}

class FilterAction implements Filter {
    // 这里还需要重新定义接口,如id的类型为string
    rowAddRow(treeData:Tree[], id, filterType):Tree[] { 
        // todo sth
    }
}

class Component {
    constructor(props) {
        super(props)
        this.actions = new FilterAction()
    }
    
    // 这里还需要定义一遍
    private actions: {
        rowAddRow: (treeData:Tree[],id:string,filterType:FilterType) =>Tree[]
    }
    
    handleAdd() {
        this.actions.rowAddRow()
    }
}

问题 1

既然我在implements实现了rowAddRow的接口定义,为什么在class里面还需要重新定义rowAddRow的接口,否则其类型默认为any

问题 2

implements 的作用和意义到底是什么

问题 3

如何做,只需要定义一遍rowAddRow,使得他在class里面以及它的实例里面都会有这样的类型推论。不是export导出那种哈。

我的理解

既然在FilterAction里面定义了rowAddRow方法的传参要求和返回类型,那么在它的实例里面使用时,应当自动会有这个方法,且该方法拥有之前规定的接口类型,不需要重新定义

最佳答案

问2:

意义在于工程化开发
比如跨端开发,使用依赖注入模式的话,顶层API依赖各端适配器,那就可以约定好interface,各端分头implements.这样要重构,要加新功能,新端都是非常容易.便于测试,便于开发.