typescript - 类型“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-proxy
npm 模块的一部分。安装了最新的类型。"@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,并且代码在运行时也可以正常工作。所以打字是正确的。我错过了什么?
解决方案
问题是在您的联合类型type ProxyTargetUrl = string | url.Url
中,仅定义Url
了字段host
。
要访问此字段,您需要一个类型断言:(<Url>options.target).host
。
See this Github issue for more information.
推荐阅读
- reactjs - 无法从我的类组件的某些功能组件访问 this.state.value
- c++ - C++ 模板类头文件/实现 - 涉及模板类的函数
- sql - 使用 join 时出错,join 会产生错误
- java - 为什么我会收到 NoSuchElementException?
- ios - 异步任务后在 SwiftUI 中的正确导航方式
- file - 重新编辑现有游戏
- javascript - 获取负数组索引
- mysql - 选择具有关系的多对多数据并在结果中添加新列
- android - 应用程序:compileDebugJavaWithJavac'。> 找不到 tools.jar 无法启动模拟器。原因:没有找到模拟器作为 `emulator -list-avds` 的输出
- html - 将图片链接作为道具传递