【问题标题】:How to use dynamic imports with typescript?如何在打字稿中使用动态导入?
【发布时间】:2020-12-03 22:26:31
【问题描述】:

我正在做打字稿,我想根据命令进行动态导入。我有这个没有问题的设置

static async GetCommand(command:string):Promise<(this: Discord.Message, ...args: string[]) => Promise<void>> {
    const f = (await import(`./classes/roles/everyone/commands/give_money/command`));
    return f.default;
}

但这被硬编码到一个固定的导入位置。我想让它像这样动态

static async GetCommand(command:string):Promise<(this: Discord.Message, ...args: string[]) => Promise<void>> {
    const f = (await import(`./classes/roles/everyone/commands/${command}/command`));
    return f.default;
}

但随后它抱怨f 的类型为any,因此无法编译。我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: javascript typescript ecmascript-6


    【解决方案1】:

    然后它抱怨 f 是 any 类型,因此无法编译。

    如果你有一个动态字符串作为import 的参数,TypeScript 假定任何。

    我该如何解决这个问题?

    如果您希望错误消失,请添加显式注释:

    static async GetCommand(command:string):Promise<(this: Discord.Message, ...args: string[]) => Promise<void>> {
        const f: any = (await import(`./classes/roles/everyone/commands/${command}/command`));
        return f.default;
    }
    

    【讨论】:

    • 我收到Unsafe assignment of an any value.。我也希望它消失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-18
    • 2023-04-04
    • 2019-11-10
    • 2015-07-23
    • 2017-05-07
    • 2018-08-15
    相关资源
    最近更新 更多