Оператор импорта машинописного текста

Я пытаюсь понять, что делает другой синтаксис es import и когда мне нужно их использовать.

Я использую typescript 1.6 (последняя версия на данный момент).

Я видел несколько примеров выполнения импорта. Один выглядит так:

import {Aurelia} from "aurelia-framework";

Что дает мне доступ к Aurelia из Aurelia Framework. Я более или менее понимаю это, но я не уверен, откуда смотрит часть в кавычках.

Вот еще один, который решарпер вставил в мой код:

import myJsServiceActions = require("../../service_actions/myJsFile");

Это также дает мне доступ к материалам в myJsFile. Но синтаксис совсем другой. И это, кажется, ссылка на путь в кавычках.

Также в этом не используются фигурные скобки {}, как в первом. Когда я пытаюсь вставить что-то вроде {ServiceActions} (модуль в этом файле), он выдает ошибку require, говорящую, что ожидается строковый литерал.

Чем отличается это второе использование (от первого)?

Я также видел эти варианты использования в Интернете, но я предполагаю, что это просто более старый синтаксис (если они все еще используются, укажите, чем они отличаются):

/// <reference path="myModules.d.ts" />
....
import gt = module('greeter'); 

И наконец, как он находит материал в кавычках? Я пробовал это:

import breeze from "breeze";

и я получаю ошибку:

Не могу найти модуль "бриз"

Но в моем config.js они определены рядом друг с другом:

map: {
    //....
    "aurelia-framework": "github:aurelia/[email protected]",
    "breeze": "npm:[email protected]",
   //.....
  }

Мне кажется, что если импорт aurelia-framework работает, то и breeze тоже должен работать. Но я предполагаю, что проблема заключается в моем незнании того, как работает «импорт».


person Vaccano    schedule 19.11.2015    source источник
comment
Вы упомянули config.js, что это такое? Вы говорите о tsconfig.json?   -  person gilamran    schedule 20.11.2015
comment
@gilamran - я не уверен, что это такое, но, похоже, он управляет моими зависимостями. Он создается, когда я делаю jspm init. Я предположил, что это обычный менеджер зависимостей веб-разработки. Что-то, что позволит вам ссылаться на вещи по красивому имени (breeze) вместо полного имени ([email protected].)   -  person Vaccano    schedule 20.11.2015
comment
jspm использует systemjs для управления всеми зависимостями вашего приложения и загрузки их при необходимости. Это не связано с машинописью.   -  person gilamran    schedule 20.11.2015


Ответы (1)


откуда часть в кавычках смотрит вверх.

  • Сначала все, что имеет declare module "aurelia-framework"
  • Затем, в зависимости от разрешения модуля, либо файл aurelia-framework вверх по дереву каталогов (разрешение модуля classic), либо поиск в стиле узла вверх по дереву каталогов (если --module commonjs или явное разрешение модуля узла).

Вот еще один, который решарпер вставил в мой код:

Относительный импорт файлов — это относительный импорт .d.ts, .ts или .tsx.

Более

import foo from "foo" vs import foo = require('foo')

Первый — это импорт в стиле ES6 (поддерживаемый ES6), а второй — импорт в стиле nodejs (по образцу var foo = require('foo')).

import breeze from "breeze";

Вы, вероятно, хотите сделать import * as breeze from "breeze"

person basarat    schedule 19.11.2015
comment
import * как ветерок от бриза помог мне. Мне пришлось заключить бриз в кавычки («бриз») в объявлении определения модуля в breeze.d.ts. Это немного хакерски, потому что на новой машине вытащенное определение не будет иметь обертки кавычек. Но без кавычек жалуется, что не может найти модуль бриза. - person Schadensbegrenzer; 19.12.2015