首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypeScript中测试未知对象中的密钥?

如何在TypeScript中测试未知对象中的密钥?
EN

Stack Overflow用户
提问于 2022-06-22 16:56:08
回答 1查看 55关注 0票数 0

我知道并理解unknown in TypeScript所做的事情。我有一个不可信的输入,输入为unknown。我想检查一下它在input.things.0下是否有真实的价值。

代码语言:javascript
复制
function isFullOfGreatThings(input: unknown) {
  return Boolean(input?.things?.[0]);
}

TypeScript抱怨Object is of type 'unknown' -但是我知道类型是未知的,这就是为什么我要测试键下的值。

如何在TypeScript?中测试未知对象中的密钥

EN

回答 1

Stack Overflow用户

发布于 2022-06-22 17:30:00

这取决于您想要的安全程度,以及作为类型检查安全过程的一部分需要多少运行时代码。

如果您真正关心的是一个布尔结果,那么您只需将input转换为any并使用您拥有的,包装在一个在catch块中返回falsetry...catch中:

TS游乐场

代码语言:javascript
复制
function isFullOfGreatThings (input: unknown): boolean {
  try {
    return Boolean((input as any)?.things?.[0]);
  }
  catch {
    return false;
  }
}

从TS游乐场编译的JS:

代码语言:javascript
复制
"use strict";
function isFullOfGreatThings(input) {
    try {
        return Boolean(input?.things?.[0]);
    }
    catch {
        return false;
    }
}
const inputs = [
    { get things() { throw new Error('Oops'); } },
    { things: { get 0() { throw new Error(`It's a trap`); } } },
    'hello',
    2,
    false,
    true,
    null,
    ['a', 'b', 'c'],
    { a: 1 },
    { things: ['something special'] },
    { things: 'text' },
    { things: { nested: 'things' } },
    Symbol('snowflake'),
    BigInt(0),
];
for (const input of inputs) {
    console.log(input, isFullOfGreatThings(input));
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72719320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档