簡體   English   中英

打字稿:動態導入類

[英]Typescript: dynamically import classes

我喜歡動態導入一個 Typescript 類。 我使用新的動態函數導入運行了所有內容,但是如何導入動態類?

我有一個骯臟的黑客,看起來是這樣的:

// main.ts
async function main2() {
    const G = './test1'
    const TASK_IMPORT_FUNCTION = await import(G)
    const TASK_CLASS = TASK_IMPORT_FUNCTION.getTask()
    const TASK = new TASK_CLASS(__dirname)
    const R_TASK = TASK.run()
}
main2()

// test1.ts
export class Task {
    constructor(inputCwd: string) {}
    // ...
}

export function getTask() {
    return Task
}

所以我的問題是:如何擺脫 getTask() 函數並以動態方式直接導入類?

解決方案

// main.ts
async function main2() {
    const TASK_IMPORT = await import(G)
    const TASK_CLASS = TASK_IMPORT.Task
    const TASK = new TASK_CLASS(__dirname)
    const R_TASK = TASK.run()
}
main2()

假設Task類位於task.ts ,則可以使用動態導入:

const task = await import("./task");

當您需要導入時。

喜歡我

const x = (async () => {
  
  let file = "./v";

  const f = await import( file);
  return f;
})().then(f => {
  
  const s = new f.default();
  s.run();
})
  .catch(error => {
    // Handle/report error
    console.error(error);
  });


在這里上課

export  default class V{
  constructor() {

  }
  run(){
    console.log("fire");
  }
}


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM