首页 > 解决方案 > 类型“ProxyTargetUrl”错误中不存在属性“主机”。即使我在 JS 文件中获得 IntelliSense

问题描述

我在文件中有以下代码.ts

const connection = {
        host: options.target.host
      };

options属于类型httpProxy.ServerOptions并且target属于类型ProxyTargetUrl

我得到的错误如下:

Property 'host' does not exist on type 'ProxyTargetUrl'.
  Property 'host' does not exist on type 'string'.

这些选项是http-proxynpm 模块的一部分。安装了最新的类型。"@types/http-proxy": "^1.16.2"

当我遵循声明时,我看到了这一点:

type ProxyTargetUrl = string | url.Url;

--

interface Url extends UrlObjectCommon {
        port?: string;
        query?: string | null | ParsedUrlQuery;
    }

--

interface UrlObjectCommon {
        auth?: string;
        hash?: string;
        host?: string;
        hostname?: string;
        href?: string;
        path?: string;
        pathname?: string;
        protocol?: string;
        search?: string;
        slashes?: boolean;
    }

为什么我会收到此错误?当我将我的代码复制到 JS 文件中时,我得到了该host属性的 IntelliSense,并且代码在运行时也可以正常工作。所以打字是正确的。我错过了什么?

标签: typescripttypesvisual-studio-code

解决方案


问题是在您的联合类型type ProxyTargetUrl = string | url.Url中,仅定义Url了字段host

要访问此字段,您需要一个类型断言:(<Url>options.target).host

See this Github issue for more information.


推荐阅读