首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何导入没有TypeScript定义的npm包,让集成开发环境仍然提供智能感知?

如何导入没有TypeScript定义的npm包,让集成开发环境仍然提供智能感知?
EN

Stack Overflow用户
提问于 2016-08-25 17:17:47
回答 1查看 2.6K关注 0票数 4

我使用了一个npm包,它没有TypeScript的类型定义。准确地说,我使用的是react-google-maps库。

按照他们的示例,我从包中导入了以下组件:

代码语言:javascript
复制
import {GoogleMapLoader, GoogleMap, Marker} from "react-google-maps";

但是,TypeScript在编译过程中会抛出一个错误:

代码语言:javascript
复制
error TS2305: Module '"react-google-maps"' has no exported member 'GoogleMapLoader'.

因此,我对此的快速修复方法是声明模块及其成员类型为"any":

代码语言:javascript
复制
declare module "react-google-maps" {
    export var GoogleMapLoader:any;
}

然而,现在的问题是,我的集成开发环境(WebStorm)不再提供智能感知。GoogleMapLoader甚至没有被识别为react组件,我相信如果我使用的是Babel,它就会被识别(至少是没有类型的方法和属性)。

如何导入没有类型定义的npm包供TypeScript编译器解析,同时又不妨碍集成开发环境提供智能感知?

EN

回答 1

Stack Overflow用户

发布于 2016-08-25 18:01:04

你需要声明你正在使用什么,而不是仅仅使用any

例如:

代码语言:javascript
复制
declare module "react-google-maps" {
    interface GoogleMapLoaderProps {
        ....
    }

    interface GoogleMapLoaderState {
        ....
    }

    class GoogleMapLoader extends React.Component<GoogleMapLoaderProps, GoogleMapLoaderState> { }
}

您可以从正在使用并需要IDE支持的内容开始,然后慢慢地添加内容。

您可以查看Writing Declaration Files,了解有关如何执行此操作的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39141261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档