2016-06-27 2 views
0

Я переместил некоторый рабочий код JavaScript в модуль npm для TypeScript для повторного использования. У меня возникли проблемы. Я сделал следующие изменения в операторах импорта, чтобы получить код работает снова:Операторы импорта TypeScript, преобразованные из JavaScript

import React, { Component } from "react" 

стали (имеет Реагировать типы машинопись установлен):

import * as React from 'react'; 
import { Component } from 'react'; 

Шлем был машинопись типов, но была проблема, так что я использовать этот формат для библиотек, без типов:

import Helmet from "react-helmet" 

стали:

const Helmet = require('react-helmet'); 

, а затем иногда мне нужно позвонить по умолчанию:

import TopBarProgressIndicator from "react-topbar-progress-indicator" 

становится:

const TopBarProgressIndicator = require('react-topbar-progress-indicator').default; 

Существуют ли какие-либо изменения машинопись конфигурации (текущие или плановые) я мог бы сделать так что это не является необходимым, или лучший способ сделать это, поскольку это требует много времени и ошибок? Я знаю флаг allowJs для tsconfig, который, кажется, обрабатывает файлы .js, но я хотел бы, чтобы это был файл .ts. В настоящее время я использую TypeScript 1.8.10 и webpack.

ответ

0

У меня обычно есть файл в моем проекте для эмбиентных объявлений (я называю это declarations.d.ts) - если я использую библиотеку, которая не имеет определенных типов, я просто добавляю определение заглушки в этот файл, который экспортирует any стоимость.

declare module "react-helmet" { 
    var _temp: any; 
    export = _temp; 
} 

Это позволит вам импортировать модуль с помощью import * as Helmet from "react-helmet", как вы делаете с React уже.

Существует planned update to TypeScript, который позволит вам сделать это с гораздо меньшим синтаксисом. Это будет выглядеть примерно так:

declare module "react-helmet"; 
+0

Спасибо. Я видел это раньше, но я думаю, что это еще больше работы и по-прежнему может потребовать изменений в инструкции import. – RationalDev