Angular2导入语法: "import * as <foo>" vs "import {<foo>}"

3

我看到有两种不同的方式可以导入模块。

大多数导入看起来像 'import {<something>}' (例如 import { Component } from '@angular/core';

另一种导入方式是 'import * as <something>' (例如 import * as _ from "lodash";

据我所知,当使用typings(例如typings install lodash=npm --save)将vanilla js模块导入到项目中时,您使用后一种方法进行导入,而不是用于Angular2模块,这是正确的吗?

如果我的假设是正确的,那么您是否以相同的方式使用两个导入的类/模块(即在声明它们以在组件类内部使用时)?

1个回答

6

使用import as something就像在该模块中使用别名,当有两个或多个导入的组件具有相同的名称时非常有用。如果不使用别名,则后面的组件将覆盖先前的组件。

可以有多个命名导出:

//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5
You can also import the complete module:

//------ main.js ------
import * as lib from 'lib';
console.log(lib.square(11)); // 121
console.log(lib.diag(4, 3)); // 5

谢谢,我感觉自己像个白痴,*有点暴露了我的问题。 - garrettmac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接