【问题标题】:TypeScript import statements converted from JavaScript从 JavaScript 转换的 TypeScript 导入语句
【发布时间】:2016-10-29 03:21:24
【问题描述】:

我将一些工作 JavaScript 代码移到 TypeScript npm 模块中以供重用,但我遇到了问题。我对导入语句进行了以下更改以使代码再次运行:

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。

【问题讨论】:

    标签: typescript webpack


    【解决方案1】:

    我的项目中通常有一个用于环境声明的文件(我称之为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";
    

    【讨论】:

    • 谢谢。我以前见过,但我认为这是更多的工作,仍然需要更改导入语句。
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2023-04-08
    • 2013-05-03
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2018-11-01
    • 2022-10-22
    相关资源
    最近更新 更多