如何解决TypeScript错误:类型'{}'。ts不存在属性(2339)

时间:2020-05-04 19:31:17

标签: javascript reactjs typescript

我有一个使用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
    }
    ...
}

0 个答案:

没有答案