如何为含空格键的对象编写TypeScript类型声明文件?
正确声明带空格键的JavaScript库类型
你的思路有误:嵌套namespace只适用于合法标识符的命名空间,带空格的键不符合JavaScript标识符规则,所以不能用namespace来声明这类属性。正确的做法是用**接口(interface)或类型别名(type)**来描述对象结构。
基础写法
直接在接口里定义带空格的键,用引号包裹即可:
declare global { interface Example { object: { ExampleA: { // 这里定义ExampleA的具体类型 }; 'Another example': { // 这里定义带空格键对应的对象类型 }; // 其他带空格或普通键继续添加 }; } // 声明全局变量Example const Example: Example; }
拆分复杂结构
如果子对象有复杂结构,可以单独定义接口,再引用:
declare global { // 单独定义子结构 interface ExampleA { foo: string; bar: number; } interface AnotherExample { someMethod: () => void; } interface Example { object: { ExampleA: ExampleA; 'Another example': AnotherExample; }; } const Example: Example; }
用类型别名简化
也可以用type别名定义对象类型,让结构更清晰:
declare global { type ExampleObjectType = { ExampleA: { /* ExampleA类型 */ }; 'Another example': { /* 带空格键的类型 */ }; }; interface Example { object: ExampleObjectType; } const Example: Example; }
核心逻辑:namespace是用来组织代码模块的,而对象的属性结构(尤其是非标识符键)需要用接口/类型别名来描述,这样TypeScript才能正确识别带空格的键名。
内容的提问来源于stack exchange,提问作者Spedwards
相关产品推荐
相关产品推荐

