gpt4 book ai didi

javascript - typescript 。检查未知类型的变量中是否存在方法/属性

转载 作者:行者123 更新时间:2023-12-01 00:41:18 44 4
gpt4 key购买 nike

TS v3.x 带来了新类型:unknown。但如何轻松使用此类型而不是 any 还不是很清楚。示例:您正在使用一些没有类型的第三方库。而且您没有时间自己编写这些类型。您需要处理该库提供的一些数据。

未知之前:

function handle(data: any) {
if (data && data.arrayProp && typeof data.arrayProp[Symbol.iterator] === 'function') {
for (let x of data.arrayProp) {...}
}
}

未知:

function handle(data: unknown) {
// this line gives TS error: `data` is unknown type
if (data && data.arrayProp && typeof data.arrayProp[Symbol.iterator]=== 'function') {
...

互联网上的大多数文档都使用 instanceof 方法来检查 data 的类型。但我并不真正感兴趣 data 的类型。我想知道的是那里是否有 arrayProp 。就是这样

如何使用未知类型执行此操作?

最佳答案

unknown 的问题在于,您必须先缩小其类型,然后才能使用它。您可以为此使用自定义类型保护:

interface ArrayProp {
arrayProp: []
}
function isArrayProps(value: unknown): value is ArrayProp {
return !!value && !!(value as ArrayProp).arrayProp;
}

function handle(data: unknown) {
if (isArrayProps(data) && typeof data.arrayProp[Symbol.iterator] === 'function') {
}
}

Playground

关于javascript - typescript 。检查未知类型的变量中是否存在方法/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57696665/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com