Typescript 定义文件不是模块

Flo*_*ris 5 javascript typescript reactjs typescript-typings

我想使用import语句将原型化的 JavaScript 对象加载到我的 Reactjs 项目中。

首先,我有一个原型 Javascript 对象,我将其导出为 Webpack 模块:

var FloDialog=function(t){this.id=Date.now(),this.cloak=this.rende // etc //etc

if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
    module.exports = FloDialog;
}
Run Code Online (Sandbox Code Playgroud)

然后在类型定义文件中flo-dialog.min.d.ts我有您在下面看到的代码:

declare module 'flo-dialog' {

interface FloDialogOptions {
    cache: boolean;
    position: string;
    effect: {
        fade: boolean;
        fill: boolean;
    }
}

interface FloDialog {
    constructor(opts?: FloDialogOptions): void;
    openUrl(title: string, url: string, callback?: () => void): void;
}

const FloDialog: FloDialog;
export = FloDialog;

}
Run Code Online (Sandbox Code Playgroud)

import * as FloDialog from '../public/js/flo-dialog.min';最后我在React组件中使用了import语句Main.tsx file

它可以在浏览器中运行,但我收到 Typescript 错误:TS2306: File '/public/js/flo-dialog.min.d.ts' is not a module.

那么,如何使用importReact... 中的语句正确导入 JavaScript 原型对象并使其强类型化?到目前为止我的方法有什么问题?

更新:Kokodoko 评论很有用。

我现在通过以下方式导入类型接口import {IFloDialog} from './types/index';并通过以下方式导入 Webpack 模块const FloDialog = require('../public/js/flo-dialog.min');

我不确定这是否是这样做的方法。但它可以工作,没有 Typescript 错误,并且 IDE 中有自动完成功能……并且它可以在浏览器中工作。