Typescript 属性类型保护未知

2023-12-01

我正在尝试输入守卫未知类型

const foo  = (obj: unknown) => {
    if (typeof obj === 'object' && obj) {
        if ('foo' in obj && typeof obj.foo === 'string') {
            return obj.foo;
        }
    }
};

但我越来越

属性“foo”在类型“object”上不存在。

我也尝试过 is 表达式不起作用:

const foo  = (obj: unknown): obj is { foo: 'string' } => {
    if (typeof obj === 'object' && obj) {
        if ('foo' in obj && typeof obj.foo === 'string') {
            return obj;
        }
    }
    throw new Error();
};

你必须在这里给 TypeScript 一些帮助:

type fooObj = object & { foo: unknown };
const foo = (obj: unknown) => {
    if (typeof obj === 'object' && obj) {
        if ('foo' in obj && typeof (obj as fooObj).foo === 'string') {
            return (obj as fooObj).foo;
        }
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript 属性类型保护未知 的相关文章

随机推荐

  • 链接 iframe 以在 Lightbox 中打开

    是否可以使用链接链接到在 lightbox 或 fancybox 中打开的 iFrame 内容 例如 查看我的平面设计画廊 单击此处 gt 从其他站点显示我的画廊的灯箱 可能的 我如何在灯箱 花式箱中对其进行编码 我知道现在这是可能的 但无
  • 在编译时使用自定义类加载器

    是否可以为 javac 或某些替代的 java 编译器 指定自定义类加载器 我很喜欢这样的壮举 因为它允许我编译使用仅由我的特殊类加载器找到的类的类 对于好奇的人 我会编写一个类加载器 它连接到数据库并根据它找到的表创建类 当您运行 jav
  • Android中如何从URL读取json数据

    我对以下代码有一些问题 我正在尝试从以下 Reddit URL 中读取内容 https www reddit com r earthporn json after 这是未正确执行的代码 public static String readCo
  • 如何限制颤振中文本字段的表情符号?

    你好 我正在寻找限制表情符号正则表达式或用于颤振的输入格式化程序 我想禁用文本字段中的表情符号 如果有人有想法 请帮助我 提前致谢 magicleon94 几乎回答了你的问题 但我认为我的答案值得一提 而不是限制不需要的表情符号 其中集合是
  • 如何读取pandas文件夹中的所有csv文件? [复制]

    这个问题在这里已经有答案了 每个月我都会下载 csv 格式的整个分类帐并将其保存到文件夹中 我如何在 pandas 中将其作为单个数据帧读取 福汤姆森的答案但最后一行应该是 import pandas as pd import glob f
  • 对于 SQL Server,我希望仅对非空值建立唯一索引[重复]

    这个问题在这里已经有答案了 可能的重复 具有重复 NULL 的 SQL Server UNIQUE 约束 在 Sql Server 中 我想要一个同时包含空值和实值的列 如果该列有值 我想确保它是唯一的 该列可以有多行且该列为空 例如 假设
  • LexikJWT 通过 token 获取用户个人资料

    使用 LexikJWTAuthenticationBundle FOSRest FOSUser 如何通过令牌获取经过身份验证的用户配置文件 是否可以 假设用户已经通过 LexikJWT 进行了身份验证 并且我有一个 api 端点 例如 ap
  • 这是 python eval() 的安全使用吗?

    如果攻击者可以控制attacker controlled nasty variable 这一段代码容易受到攻击吗 dic one 1 nasty attacker controlled nasty variable store str di
  • 图像在列表视图中随机播放。滚动时

    发生的情况是 当滚动列表时 每个项目上加载的图像都会被打乱 并且每个项目的头像都会转到下一个项目结束 我不知道我是否清楚 但我会用图片来展示 我的自定义适配器类 import android content Context import a
  • 从 jqGrid 的 gridComplete 事件期间创建的按钮调用函数?

    我试图在 gridComplete 事件期间创建的按钮的 onclick 事件中调用一个函数 加载正常 这是第一行中按钮的渲染 html 的样子
  • 匹配数组内的多个条件[重复]

    这个问题在这里已经有答案了 我有以下内容 offers user jon price 200 selected false user ted price 100 selected true 我正在尝试进行匹配 以获取用户被 ted 且选择为
  • 如何使用 DirectoryInfo.GetFiles 并让它在找到第一个匹配项后停止?

    需要搜索目录 子目录来查找文件 希望它在找到文件后停止 这是我缺少的 DirectoryInfo GetFiles 内置功能 还是应该使用其他功能 自行实现的递归搜索 Use DirectoryInfo EnumerateFiles 相反
  • Chrome ARC 中的 Google 地图

    我最近看到 ARC 现在支持一些 Google Play 服务 包括 Google 地图 使用 ARC Welder 时 我指定以下元数据 usePlayServices maps 根据文档here 我还必须在元数据中包含 crx key
  • 由于 403 错误,HPA 无法获取指标

    我在 hpa 中使用了以下指标 apiVersion autoscaling v2beta2 kind HorizontalPodAutoscaler metadata name app svc hpa namespace default
  • .Net TextBox 具有自动完成和自定义排序(非字母顺序)

    我正在搜索具有默认自动完成功能的文本框控件 但建议中的条目应像列表中的项目一样排序 例如 列出项目 ab ac aa bb 如果我在文本框中输入字母 a 建议的项目应按如下方式排序 ab ac aa 不是这样的 aa ab ac 有没有办法
  • Chrome扩展:onclick()事件没有触发alert()弹出窗口[重复]

    这个问题在这里已经有答案了 我无法触发alert 弹出窗口onclick event Code File 清单 json name Project version 1 0 0 manifest version 2 description P
  • 将 Java 库导入到 C# 中

    因此 我已用 C 将代码写入 zip 文件 但是当我导入库时 我有以下内容 Using java util Using java util zip Using java io 但是 这些都用红色下划线表示 并带有错误消息 The type
  • 检查来电号码是否存储在联系人列表中 android

    在我的 Android 应用程序中 当有来电时 我想显示我的自定义用户界面 并且我能够做到这一点 不 我想检查传入号码是否来自联系人 下面是我执行此操作的代码 但对于存储在我的联系人列表中的传入号码 它返回 null public Stri
  • 无法在 Haskell 中将 IO 字符串转换为 [Char]

    我编写了这个简单的函数 它采用两个文件名 字符串 并将第一个文件的内容写入第二个文件应用toUpper到每个角色 import Data Char ioFile f1 f2 do s lt readFile f1 sUp lt toUppe
  • Typescript 属性类型保护未知

    我正在尝试输入守卫未知类型 const foo obj unknown gt if typeof obj object obj if foo in obj typeof obj foo string return obj foo 但我越来越