问题描述
我们的项目,有的人使用TS,有的人只用JS,所以公共模块都是用JS写的,就需要给添加TS的类型声明文件d.ts,但是声明之后我发现没有生效,不知道该如何关联?
问题出现的环境背景及自己尝试过哪些方法
我也尝试过给项目中的第三方JS库写类型声明文件,那个是生效的,但是给自己写的JS库写的时候就没有生效,不知道是不是因为前者是全局,后者是需要import相对路径导入?
相关代码
给一个BasePage的公共JS文件写类型声明,这个是类型声明文件里面的一段代码:
declare class BasePage<P extends BasePageProps> extends IBUPage<P> {
navigation: object;
app: object;
pageKey: string;
pageConfig: object;
constructor(props: P, ext: object): void;
getPageId(): number;
_getRoute(targetPageName: string): businessPage[];
_isRouteExist(targetPageName: string): boolean;
_popToPage(targetPageName: string): void;
diyBackPage(targetPageName: string): void;
diyForwardPage(targetPageName: string, params: object, options: object): void;
backToDefaultPage(): void;
jumpToDiyIndex(): void;
}
这个是调用:
import BasePage from '../../frame/BasePage'
export default class HotelList extends BasePage<IProps> {
constructor(props) {
super(props);
console.log(this.props.hotelList)
}
renderPageContent() {
return (
<ViewPort>
<View>
{
_.map([1, 2, 3], (item) => {
return <Text key={item}>hello, world</Text>
})
}
</View>
</ViewPort>
)
}
}
但是这里的BasePage依然是找不到类型。
请问一下,d.ts文件和basePage.js文件放的位置是不是有什么讲究?还是我declare有问题?或者是需要在tsconfig里面配置一下?
好吧,这个怪我没有好好看文档了,这里有答案:链接描述