擅长:python、mysql、java
<p>以下是迄今为止最简明的解决方案:</p>
<pre><code>function isArrayOfStrings(value: any): boolean {
return Array.isArray(value) && value.every(item => typeof item === "string");
}
</code></pre>
<p>注意,<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every" rel="noreferrer">^{<cd1>}</a>将返回空数组的<code>true</code>。如果需要返回空数组的<code>false</code>,则应将<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length" rel="noreferrer">^{<cd4>}</a>添加到condition子句中:</p>
<pre><code>function isNonEmptyArrayOfStrings(value: any): boolean {
return Array.isArray(value) && value.length && value.every(item => typeof item === "string");
}
</code></pre>
<p>TypeScript中没有任何运行时类型信息(也不会有,请参见<a href="https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals#non-goals" rel="noreferrer">TypeScript Design Goals > Non goals</a>,5),因此无法获取空数组的类型。对于非空数组,您只能逐个检查其项的类型。</p>