我有一个使用TypeScript编写的基于Create-React-App的React应用程序。我需要使用提供他们自己的JS文件的第三方服务,以方便使用他们的API。在此JS文件中调用方法后,我得到一个对象,并且需要查询其属性。尽管此对象具有一组有限的属性,但我们只能在运行时找出对于任何给定调用,对象中包含哪些属性。当我在TS代码中引用这些属性时,由于TS无法识别它们,因此出现错误。
由于对象具有有限的属性集,我如何/在哪里定义它们,以便TS可以引用它们?我已经配置了编译器选项"noImplicitAny": false
。
我正在调用的JS函数:
const parseHash = () => {
return window.location.hash.replace('#', '').split('&').reduce(
(prev, item) => {
return Object.assign(
{[item.split('=')[0]]: decodeURIComponent(item.split('=')[1])},
prev);
}, {});
};
出现以下错误的TS函数:
import client from './3rdPartyJavaScriptFile';
const myTsFunction = () => {
const obj = client.parseHash();
if (obj.propA) { // throws error "Property 'propA' does not exist on type '{}'.ts(2339)"
// Do something
}
if (obj.propB} { // throws error "Property 'propB' does not exist on type '{}'.ts(2339)"
// Do something
}
...
}