Синтаксис импорта Angular2: import * as ‹foo› vs import {‹foo›}

Я вижу два разных способа импорта модулей.

Большая часть импорта выглядит как 'import {<something>} (т.е. import { Component } from '@angular/core';)

Остальные импортируются как 'import * as <something> (т.е. import * as _ from "lodash";)

Насколько я понимаю, вы импортируете с использованием последнего метода при импорте модулей vanilla js в свой проект с использованием типов (т.е. typings install lodash=npm --save), а не для модулей Angular2, это правильно?

Если мое предположение верно, используете ли вы оба импортированных класса/модуля одинаково (т.е., когда объявляете их для использования внутри класса компонентов)?


person garrettmac    schedule 25.09.2016    source источник


Ответы (1)


Использование импорта как чего-то работает как псевдоним в этом модуле, полезно, когда есть два или более импортированных компонента с одинаковым именем, не используя псевдоним, более поздний компонент переопределит первый.

Может быть несколько именованных экспортов:

//------ 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
person manish.nith    schedule 25.09.2016
comment
спасибо, я чувствую себя идиотом, * как бы выдает это. - person garrettmac; 25.09.2016