📜  如何在 Typescript 中导入模块?

📅  最后修改于: 2022-05-13 01:56:33.221000             🧑  作者: Mango

如何在 Typescript 中导入模块?

在开始导入模块之前,首先我们需要了解 TypeScript 中模块的基础知识。

我们知道,JavaScript 从 2015 年的 ES6 版本开始就带有模块的概念,到 2020 年,大多数 Web 浏览器和 JavaScript 运行时都得到了广泛的支持。 TypeScript 也共享相同的模块概念。任何包含顶级导入或导出的文件都被视为模块。

该模块旨在安排用 TypeScript 编写的代码并用作本地范围。模块基本上是写在单独文件中的脚本。 Import 允许您在现有文件中引用它们的源位置。现在我们将了解导入外部模型的不同方法,并知道如何在所需位置使用该模块。

方法:在导入任何模块之前,我们需要从另一个文件中导出它。我们可以使用export关键字创建一个模块,并可以使用import关键字在其他模块中使用它。我们可以导出基于类的模块和基于函数的模块。如下所示。

导出基于类的模块的语法:

export class CLASS_NAME {
  constructor(para1 , para2) {}
  Method() {
    console.log("This is class-based Module export" );
  }
}

基于导出函数的模块的语法:

export function FUNCTION_NAME {
    console.log("This is function-based Module export");
}

导入外部模块的方法:在 TypeScript 中,我们使用关键字importfrom来导入特定模块或命名参数。让我们看看我们可以使用导入操作的不同方式。

1.导入默认导出:为了从文件中导入默认导出,我们可以使用文件的from位置并在它之前使用关键字import ,或者我们可以给导入一个特定的名称,即MODULE_NAME,这使得语法如下。

import MODULE_NAME from './MODULE_LOCATION'

2.导入命名值:每个文件都不需要导出默认模块,它们可以有许多命名参数,如果我们需要导入一个,我们应该使用如下语法。

import { MODULE_NAME } from './MODULE_LOCATION'

同样,对于多个模块导入,我们可以使用逗号 (,) 分隔符来分隔花括号 {} 中的两个参数名称。如下所示。

import { MODULE_NAME1, MODULE_NAME2, ... , 
    MODULE_NAMEn } from ./MODULE_LOCATION'

3. 导入 Default Exports 和 Named Values 的组合:标题清楚地表明了我们需要看到的是相同的语法。为了导入组合,我们应该使用以下语法。

import DEFAULT_EXPORT, { MODULE_NAME1, 
    MODULE_NAME2, ... , MODULE_NAMEn } 
    from './MODULE_LOCATION'

4. 从模块中导入所有内容:有时您需要从特定文件中导入每个模块,然后您可以使用(*)星号导入所有模块并将它们分配给一个对象(OBJ_NAME),如下所示

import * as OBJ_NAME from './MODULE_LOCATION'

或者您可以使用:

import MODULE = require('LOCATION')

现在我们使用以下示例来实现我们在上面学到的内容:

示例 1:将默认导出模块从一个文件导入另一个文件。

Module1.ts
// Exporting the Default export module
// which is used in another file
// export default keyword used to 
// Export the module
export default function GFG() {
    return "GeeksforGeeks";
}


Module2.ts
// Importing the default export module 
// from the location of the file.
import GFG from "./MODULE1";
  
// Creating an object of the
// class which is imported
let msg = GFG();
  
console.log("This is MSG from ");
  
console.log(msg);


Module1.ts
// Exporting the class which used in another file
// export keyword used to Export the module
export class GFG {
      StringConcat(banner) {
        return "Welcome to " + banner;
      }
}


Module2.ts
// Importing the module
// from the location of the file.
import { GFG } from "./Module1";
  
let obj1 = new GFG();
  
console.log(obj1.StringConcat("GeeksforGeeks"));


Module1.ts
// Export all the classes functions
  
export function Welcome(str: string) {
  return "Hello " + str + "..!";
}
  
export class Geeks {
  msg(str1: string) {
    return "Welcome to " + str1;
  }
}


Module2.ts
// Importing everything from the MODULE1.ts 
// using 'import *' and 'as' keyword
  
import * as AllImports from "./MODULE1";
  
// Variables created
let str = "Geeks";
let str1 = "GeeksforGeeks";
  
// Calling function using common import
// name i.e. AllImport
console.log(AllImports.Welcome(str));
  
// Object of imported class is created
let obj = new AllImports.Geeks();
  
// Calling the import class function
// using object name
console.log(obj.msg(str1));


模块2.ts

// Importing the default export module 
// from the location of the file.
import GFG from "./MODULE1";
  
// Creating an object of the
// class which is imported
let msg = GFG();
  
console.log("This is MSG from ");
  
console.log(msg);

打印输出的步骤:首先,将 TypeScript 文件转换为 JavaScript,您需要在各自的终端上运行以下命令。

> tsc MODULE2.ts

之后,您需要使用 Node 模块运行一个 JavaScript 文件。如下所示。

> node MODULE2.js

输出:

示例 2:将一个类从一个文件导入到另一个文件。

模块1.ts

// Exporting the class which used in another file
// export keyword used to Export the module
export class GFG {
      StringConcat(banner) {
        return "Welcome to " + banner;
      }
}

模块2.ts

// Importing the module
// from the location of the file.
import { GFG } from "./Module1";
  
let obj1 = new GFG();
  
console.log(obj1.StringConcat("GeeksforGeeks"));

打印输出步骤:

> tsc MODULE2.ts
> node MODULE2.js

输出:

示例 3:将一个文件中的所有模块导入另一个文件。

模块1.ts

// Export all the classes functions
  
export function Welcome(str: string) {
  return "Hello " + str + "..!";
}
  
export class Geeks {
  msg(str1: string) {
    return "Welcome to " + str1;
  }
}

模块2.ts

// Importing everything from the MODULE1.ts 
// using 'import *' and 'as' keyword
  
import * as AllImports from "./MODULE1";
  
// Variables created
let str = "Geeks";
let str1 = "GeeksforGeeks";
  
// Calling function using common import
// name i.e. AllImport
console.log(AllImports.Welcome(str));
  
// Object of imported class is created
let obj = new AllImports.Geeks();
  
// Calling the import class function
// using object name
console.log(obj.msg(str1));

打印输出步骤:

> tsc MODULE2.ts
> node MODULE2.js

输出: