通过另一个导入扩展名称空间内定义的接口

时间:2018-06-09 09:56:28

标签: typescript definitelytyped

我正在编写使用扩展名作为独立npm包的包的类型定义。这个包导出一个构造函数作为命名空间,所以现在,.d.ts文件是这样的:

export as namespace module_name;

declare function module_name(): module_name.Methods;

declare namespace module_name {
    interface Property {
         // some fields here
    }
    interface ReturnValue {
        // some fields here
    }
    interface Methods {
        method(Property): ReturnValue;
    }
}

然后,单独导入的扩展可能希望将此处定义的方法与不同的道具一起使用。即,在扩展名中它将是:

export interface Property2 {
    // some other fields here
}

在消费者代码中,它将是:

import * as module_name from 'module_name';
import * as extension from 'extension';

const props: extension.Property2 = {
    // some fields set here
}
module_name().method(props);

现在它显然会产生编译错误,因为Property2通常与Property不兼容。问题:是否有可能以某种方式编写基本模块和扩展,以便消费者使用此代码并添加最少的内容?

0 个答案:

没有答案