首页 新闻 会员 周边 捐助

typescript 中如何将 namespace 转换为 module

0
悬赏园豆:30 [已解决问题] 解决于 2025-08-07 22:11

园子的 vscode 插件实现代码中很多地方用了 namespace,现在想把 namespace 改为 module,请问如何修改?

export namespace LocalState {
    export function getExtCfg() {
        return workspace.getConfiguration('cnblogsClient')
    }
}
dudu的主页 dudu | 高人七级 | 园豆:25263
提问于:2025-08-07 21:38
< >
分享
最佳答案
0

需要进行如下修改:

  • namespace 改为 class
  • export function 改为 static
  • export async function 改为 static async
  • export const 改为 static

比如针对提问的代码修改为下面这样

export class LocalState {
    static getExtCfg() {
        return workspace.getConfiguration('cnblogsClient')
    }
}
dudu | 高人七级 |园豆:25263 | 2025-08-07 22:11

如果 namespace 中包含点号

export namespace Browser.Open {
    export function open(url: string) {
        return execCmd('vscode.open', Uri.parse(url))
    }
}

由于 class 名称中不允许包含点号,需要通过嵌套 class 实现

export class Browser {
    static Open = class {
        static open(url: string) {
            return execCmd('vscode.open', Uri.parse(url))
        }
    }
}
dudu | 园豆:25263 (高人七级) | 2025-08-07 22:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册