Javascript 在Create React应用程序中为节点模块添加自定义类型脚本类型声明

Javascript 在Create React应用程序中为节点模块添加自定义类型脚本类型声明,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在努力为Create-react-App应用程序中的react-load脚本添加类型声明 在src文件夹中,我创建了一个react load script.d.ts文件,并添加了以下内容: // Type definitions for React Load Script declare module 'react-load-script' { import * as React from 'react' interface Script { url: string }

我正在努力为Create-react-App应用程序中的
react-load脚本添加类型声明

src
文件夹中,我创建了一个
react load script.d.ts
文件,并添加了以下内容:

// Type definitions for React Load Script

declare module 'react-load-script' {
  import * as React from 'react'
  interface Script {
    url: string
  }
}
根据以上内容,我得到了错误:

JSX元素类型“Script”没有任何构造或调用 签名

我哪里做错了?这是模块:

这是我当前在应用程序中使用它的情况:

<Script url="https://maps.googleapis.com/maps/api/js?                               key=your_api_key&libraries=places"          
    />
有了这个,我仍然得到了错误:

找不到模块“反应加载脚本”的声明文件。 “/Users/sb/git/fl app/node_modules/react load script/lib/index.js” 隐式具有“any”类型


这是因为
Script
是组件,但是您的界面定义了它的
props

遵循lib,您可能必须执行以下操作:

导出接口脚本道具{
url:string;
加载:()=>无效;
//等等。。。
}
导出默认类脚本扩展React.Component{}

评论后编辑

declare module 'your-module-that-has-no-types';
您的类型涉及第三方模块。你必须向Typescript提出建议。为此,您将在模块声明中封装类型,如下所示:

//index.d.ts
声明模块“反应加载脚本”{
//在这里输入。。。
导出接口脚本道具{
url:string;
加载:()=>无效;
//等等。。。
}
导出默认类脚本扩展React.Component{}
}

注意:在项目的根目录中创建一个名为“custom types”的文件夹,并在其中创建文件“index.d.ts”

索引d.ts

declare module 'your-module-that-has-no-types';
tsconfig.json

{
  "compilerOptions": {
    // ...other props,
    "typeRoots": ["./custom-types", "node_modules/@types"]
  },
  "include": [
    "src"
, "custom-types/index.d.ts"  ],
}

谢谢你。然而,这给了我:
找不到模块'react load script'的声明文件。
。这是我声明文件的全部代码,以防我做错了什么:您应该告诉typescript编译器在哪里可以找到您的类型定义文件。在
tsconfig.json
中,使用types文件夹和
node\u modules/@types
定义
typeroot
。非常感谢你的帮助。我用细节编辑了主要帖子,但仍然不起作用。非常感谢Richard。。。我会试一试的。当你把导入放在这里时…
它们指的是什么导入?嗯。。在你的情况下,我考虑了
反应
,但可能没有必要,我不记得你是否必须这样做。我将在今天晚些时候测试它。
{
  "compilerOptions": {
    // ...other props,
    "typeRoots": ["./custom-types", "node_modules/@types"]
  },
  "include": [
    "src"
, "custom-types/index.d.ts"  ],
}