我使用的是npm包,它没有TypeScript的类型定义。确切地说,我正在使用react-google-maps
库。
按照他们的示例,我从包中导入了以下组件:
import {GoogleMapLoader, GoogleMap, Marker} from "react-google-maps";
但是,TypeScript在编译期间会抛出错误:
error TS2305: Module '"react-google-maps"' has no exported member 'GoogleMapLoader'.
所以,我对此的快速解决方案是模块的声明,其成员类型为“any”:
declare module "react-google-maps" {
export var GoogleMapLoader:any;
}
现在,问题是我的IDE(WebStorm)不再提供intellisense了。 GoogleMapLoader
甚至没有被认为是反应成分,我相信如果我使用巴别塔,我会认为它(至少是没有打字的方法和属性)。
如何导入没有类型定义的npm软件包,以便由TypeScript编译器解析,但是不妨碍IDE提供智能感知?
答案 0 :(得分:1)
您需要声明您正在使用的内容,而不仅仅是使用any
。
例如:
declare module "react-google-maps" {
interface GoogleMapLoaderProps {
....
}
interface GoogleMapLoaderState {
....
}
class GoogleMapLoader extends React.Component<GoogleMapLoaderProps, GoogleMapLoaderState> { }
}
您可以从正在使用的内容开始,需要IDE支持,并慢慢添加内容 您可以查看Writing Declaration Files以获取有关如何操作的详细信息。