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

Angular2 importing syntax: "import * as <foo>" vs "import {<foo>}"

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

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

其他人像 'import * as <something> 一样导入(即 import * as _ from "lodash";

据我了解,您在使用 typings(即 typings install lodash=npm --save)将 vanilla js 模块导入项目时使用后一种方法导入,而不是 Angular2 模块,对吗?

如果我的假设是正确的,您是否以相同的方式使用两个导入的 classes/modules(ie 当您声明它们在组件 class 中使用时)?

使用 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