2016-03-31 4 views
0

Я использую Visual Studio 2013/TypeScript 1.8.5/NPM/Typings.Как использовать файл определения типа Type без сильного имени в безмониторной среде

Я хочу скомпилировать код TypeScript в ES5 с некоторыми React JSX и, что более важно, без модулей.

Некоторые файлы с образцами определений выбирают мне только строку с именем module. Под «строка с именем», я имею в виду, как это:

declare module "redux-devtools" {} 

Когда другие это:

declare namespace Redux {} 
declare module "redux" {} 

Когда есть то, что я называю «Строгое имя», я могу использовать эти определения непосредственно в моем код.

var foobar = Redux; 

Но когда есть только строковый модуль, я не знаю, как их использовать. Понятно, что я должен использовать оператор import, но когда я это делаю, я получаю «не могу скомпилировать модули, если не указан флаг« -module »», и снова я не хочу модули в своем целевом коде.

import { createDevTools } from 'redux-devtools'; 
const DevTools = createDevTools(/**/); 

Есть ли особый способ сделать это? Или это файлы определения, такие как redux-devtools, которые в первую очередь ошибочны?

EDIT:

Если я компилирую транскрипт ES6, я больше не получить «не может компилировать модули ...» сообщение, когда я импортировать внешние модули. Машинопись генерирует операторы, как это вместо:

const redux_devtools_1 = require('redux-devtools'); 

Я считаю, это удивительно, так как "требуют() не является частью ES6, что означает, что я должен был бы использовать ES6-регулировочной шайбы + RequireJS для этого решения для работы?

Кроме того, у меня есть общий файл «_references.ts», как это:

/// <reference path="../typings/browser.d.ts" /> 

ответ

0

Используйте "triple-slash reference"/// <reference path="..."> вместо того, import заявления, чтобы тянуть в определениях библиотеки.

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

Это зависит от вас, чтобы убедиться, что эти реализации библиотеки доступны в среде выполнения.