从JavaScript

时间:2016-06-27 07:43:45

标签: typescript webpack

我将一些正在运行的JavaScript代码移动到TypeScript npm模块中以便重用我遇到了问题。我对imports语句进行了以下更改,以使代码再次运行:

import React, { Component } from "react"

成了(安装了React TypeScript类型):

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

Helmet有TypeScript类型,但有问题,所以我将此格式用于没有类型的库:

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;

我是否可以进行任何TypeScript配置更改(当前或计划),因此这是不必要的,或者更好的方法来执行此操作,因为它耗时且容易出错?我知道tsconfig的allowJs标志,它似乎处理.js个文件,但我希望它是一个.ts文件。我目前正在使用TypeScript 1.8.10和webpack。

1 个答案:

答案 0 :(得分: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";