我为我的应用程序conf.ts使用了一个配置文件,该文件合并了其他文件中的配置值,以使其井井有条。我合并它们,因为当我想使用配置值时,写Conf.MY_LONG_NAMED_VALUEConf.SubCategory.MY_LONG_NAMED_VALUE更容易

import {CoreConf} from './conf/game/core.conf';
import {ViewConf} from './conf/view/view.conf';
import {DebugConf} from './conf/game/debug.conf';

/**
 *
 * @namespace Conf
 */
export const Conf: {[index: string] : any} = $.extend({},
    CoreConf,
    DebugConf,
    ViewConf
);


我目前正在从JavaScript迁移到TypeScript,并且虽然WebStorm中的JavaScript代码完成工作正常(由于JSDoc标签@namespace),但TypeScript不会自动完成子类别中的配置名称。

我发现的两种解决方案是要么只使用一个文件=一个对象,但对象的组织性较差,要么使用所有配置名称创建索引签名(或接口),这是工作的两倍。

有没有更好的方法可以使这项工作?

最佳答案

您可以输入Conf作为配置之间的交集类型:

export const Conf: typeof CoreConf & typeof DebugConf & typeof ViewConf


或者您可以使用Object.assign键入其返回所有参数类型的交集类型

export const Conf = Object.assign({}, CoreConf, DebugConf, ViewConf)

09-13 03:11