javascript - 获取扩展对象的 TypeScript 代码补全

标签 javascript jquery typescript webstorm

我的应用程序 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 不会自动完成子类别中的配置名称。

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

有没有更好的方法来完成这项工作?

最佳答案

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

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

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

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

关于javascript - 获取扩展对象的 TypeScript 代码补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821185/

相关文章:

javascript - 如何与node同步执行node.js文件?

javascript - AJAX 在加载时按设定的时间间隔运行

javascript - jQuery — 带有滚动边栏的固定内容

enums - 枚举作为 TypeScript 中的参数

Angular2 - 模糊时的 FormControl 验证

node.js - 如何在nestjs中手动注入(inject)依赖

javascript - 在 jQuery 中翻书

javascript - document.write 完成后重定向

javascript - 错误或成功提交表单时的警报消息

c# - 如何在asp.net中使用C#将jquery flot动态生成的图表导出到Excel中?