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

时间:2016-09-25 03:18:13

标签: javascript angular import typescript-typings angular2-injection

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

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

其他导入如'import * as <something>(即import * as _ from "lodash";

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

如果我的假设是正确的,你是否以相同的方式使用两个导入的类/模块(当你声明它们在Components类中使用时)?

1 个答案:

答案 0 :(得分:6)

使用import就像该模块中的别名一样,当有两个或多个具有相同名称的导入组件而不使用别名时,有用,后面的组件将覆盖第一个。

可以有多个命名导出:

//------ 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