TypeScript:如何将枚举对象赋值给全局对象属性?
TypeScript全局声明IIFE导出的枚举对象
要让TypeScript识别全局window.test.ExampleEnum是整个枚举对象而非单个枚举值,只需在全局声明中使用typeof ExampleEnum作为类型注解,具体操作如下:
- 保留已有的枚举声明:
export declare enum ExampleEnum { HELLO = "HELLO" }
- 修改全局声明代码,将
ExampleEnum的类型指定为typeof ExampleEnum:
declare global { var test: { ExampleEnum: typeof ExampleEnum } }
原理说明
ExampleEnum本身代表的是枚举值的联合类型(此处为ExampleEnum.HELLO,即字符串字面量"HELLO")typeof ExampleEnum才是整个枚举对象的类型,包含所有枚举成员的键值映射,正好对应IIFE版本挂载到全局的枚举对象
这样声明后,TypeScript就能正确识别window.test.ExampleEnum.HELLO的类型,并且提供对应的代码提示。
内容的提问来源于stack exchange,提问作者WMorkowski
相关产品推荐
相关产品推荐

