【问题标题】:I have multi type variable as return type. How can I check if variable is having string[] type我有多种类型的变量作为返回类型。如何检查变量是否具有 string[] 类型
【发布时间】:2021-06-30 22:39:26
【问题描述】:
public RowData: PricingOrder[] | Notification[] | ActionLog[] | string[];

如果 RowDatastring[] 类型 (Ex-RowData = ['cat','dog','anyother'];)

if(RowData === string[] type ){
  //perform some string array related operation
 } else {
  //perform custom class array related operation
}

【问题讨论】:

  • 这能回答你的问题吗? Test for array of string type in TypeScript
  • 使用Array#some(或Array#every)和typeof的最简单的实现是:if (RowData.some(item => typeof item === 'string')) { /* string type */ } else { /* other type */ }
  • @MichaelD 我不想遍历数组的内容。有没有其他直接变量类型的技巧?
  • @sumit-sharma 是否有可能有这样的数组[1,"a"]?我的意思是数字和字符串的组合?
  • 不,它总是只有数组中的字符串值。

标签: javascript angular typescript


【解决方案1】:

根据您的评论,您的数组不是组合类型。所以你只需要检查两件事:

  1. 你的结果是数组吗?
  2. 数组的第一个值的第二种类型。

var srray = ["a","b"];

let isArrayStringType = false;

if(Array.isArray(srray)){
   isArrayStringType = srray.length > 0 && typeof srray[0] == 'string'
}

console.log(isArrayStringType)

更新

你的函数的返回类型不包括string类型,所以你可以很容易地查看第二个:typeof srray[0] == 'string'

【讨论】:

  • 为什么要额外检查Array.isArray?这不是OP的要求之一。你可以简单地做typeof srray[0] == 'string'
  • 您的权利。他的函数返回类型也不返回string。谢谢
  • 似乎这是最简单的方法。非常感谢
猜你喜欢
  • 2017-09-15
  • 1970-01-01
  • 2016-03-01
  • 2021-10-26
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
相关资源
最近更新 更多