【问题标题】:Same variable name and method TypeScript相同的变量名和方法 TypeScript
【发布时间】:2014-12-05 10:31:58
【问题描述】:

我想为 DataTables 1.9.4 创建一个定义文件,但我不知道如何处理以下API。有一个与变量同名的方法。例如:

state();
state.clear();
state.loaded();

我会这样做:

interface API {
    //...
    state(): any;
    state: StateInterface;
    //...
}
interface StateInterface {
    clear(): API;
    loaded(): any;
}

但这会带来“重复标识符”错误...

顺便说一句。该定义已经存在,但对于旧 API

【问题讨论】:

    标签: javascript datatables typescript jquery-datatables


    【解决方案1】:

    真的很简单:

    interface State{
        ():any;
        clear:()=>any;
        loaded:()=>any;
    }
    declare var state:State;
    
    state();
    state.clear();
    state.loaded();
    

    【讨论】:

    • 很酷,没有名字的方法可以做这件事。谢谢:-)
    【解决方案2】:

    你可以使用一个合并的模块来声明它,这里是一个环境版本:

    declare function state(): void;
    declare module state {
        export function clear(): void;
        export function loaded(): void;
    }
    

    这允许您调用所有这些方法:

    state();
    state.clear();
    state.loaded();
    

    如果您正在寻找具体版本(不是环境声明),这里有一个示例:

    function state(): void {
        console.log('state');
    }
    
    module state {
        export function clear(): void {
            console.log('clear');
        }
    
        export function loaded(): void {
            console.log('loaded');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2020-03-20
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      相关资源
      最近更新 更多