2016-10-03 2 views
1

Я застрял, пытаясь понять модульные вещи в машинописном файле с помощью AMD (я использую RequireJS); в jQuery.d.ts типизации Я скачал from here содержит следующие строки в конец файла:Головная боль загрузочного модуля для машиностроения

declare module "jquery" { 
    export = $; 
} 
declare var jQuery: JQueryStatic; 
declare var $: JQueryStatic; 

Я пытаюсь понять, что это самый правильный способ импортировать модуль Jquery.

До сих пор я использую

import $ = require('jquery'); 

это, кажется, правильно загрузить тип определения JQuery (я имею IntelliSense на объекте $) и в то же время он генерирует ЯШ:

define(["require", "jquery"], function(require, $) { ... } 

, так что requireJs может правильно загрузить библиотеку, когда это необходимо.

1) Я делаю это правильно?

official docs говорит, что

При импорте модуля с помощью экспорта =, машинопись конкретного импорта пусть = требуется («модуль») должен быть использован для импорта модуля.

Но official lang spec говорит:

Импорт требует существуют декларации для обратной совместимости с более ранними версиями машинописи. ImportRequireDeclaration: import BindingIdentifier = require (StringLiteral);

2) Таким образом, идентификатор синтаксиса «импорт = требуется (строка) осуждается Должен ли я использовать вместо

import * as $ from 'jquery'; 

3) official lang spec также говорит: существуют

Экспорт заданий для обратная совместимость с более ранними версиями TypeScript. Назначение экспорта обозначает член модуля как объект, который будет экспортироваться вместо самого модуля. ExportAssignment: export = IdentifierReference

4) Так что синтаксис «export = $;» в jquery.d.ts устарел?

5) Если я хотел бы написать свой собственный «модуль», как его можно импортировать с помощью не относительного пути? Я не хотел бы использовать:

import * as mymodule from '../myfolder/mymodule'; 

Вместо этого я хотел бы использовать:

Есть ли способ сделать это? Как объявить модуль? Синтаксис «объявить модуль»? Синтаксис "export ="? Что-то другое?

6) Является ли я единственным, кто этот материал (и официальные документы) действительно запутан?

Спасибо, ребята.

ответ

0

Я единственный, кто этот материал (и официальные документы) действительно запутан?

Нет. Я бы сказал, что документы ошибочны. Я делаю import * as $ from "jquery";.

Больше

Я также поднял вашу озабоченность: https://github.com/Microsoft/TypeScript/issues/11340

+0

Спасибо basarat! Кстати, я уже прочитал вашу книгу TypeScript Deep Dive, это отличная работа! – user2010955

Смежные вопросы