在TypeScript中从不使用isArray检查和推断类型
我试图在TypeScript中执行一个简单的数组检查,但显然它所做的是推断,如果它不是数组(实际上接受type在TypeScript中从不使用isArray检查和推断类型,typescript,Typescript,我试图在TypeScript中执行一个简单的数组检查,但显然它所做的是推断,如果它不是数组(实际上接受typeany作为参数),那么它必须是typenever。我对TypeScript的工作原理感到好奇。用isArray处理此推断的正确方法是什么 代码是: if (Array.isArray(response)) { // do something } else { if (response.hasOwnProperty('myProperty')) { // FAILS com
any
作为参数),那么它必须是typenever
。我对TypeScript的工作原理感到好奇。用isArray
处理此推断的正确方法是什么
代码是:
if (Array.isArray(response)) {
// do something
} else {
if (response.hasOwnProperty('myProperty')) { // FAILS compilation, because response is of type 'never' here.
// do something else
}
}
类似这样的检查也会产生同样的推论:if(数组的响应实例)
有没有可能在没有显式施法的情况下实现这一点?您可能正在寻找“!”符号
[
那么
(响应为任意)。hasOwnProperty('myProperty')呢
?事实上,强制转换确实有效,但似乎这不是解决这个推论的最佳方法?如果这是唯一的方法,那么我想我会用它运行。明白了。我也对你问题的另一个答案感兴趣。响应的类型是什么?
?请分享你的大部分代码。如果你在el中得到千万不要键入这意味着响应对象显式地具有数组类型。
const response:number[] =[12];
if (Array.isArray(response)) {
// do something
} else {
if (response!.hasOwnProperty('myProperty')) { // will not fail thank to the non-null-assertion-operator
// do something else
}
}