Typescript 如何使用array.includes而不使用任何或忽略?

Typescript 如何使用array.includes而不使用任何或忽略?,typescript,Typescript,给定一个字符串数组:ie const foo = ['a', 'b', 'c']. 我如何键入foo.includes,以便foo.includes(1)返回false并且TS不会抛出错误,而不使用any或@TS ignore 我收到的错误是,类型为“1”的参数不可分配给类型为“string”的参数,我同意这一点,但它仍然允许这样做 我100%理解是的,我有一个字符串数组,当然传入数字将返回false,但这仍然应该是类型安全的 我尝试了很多选择,但都没有用 理想情况下,我希望可以使用一些泛型类

给定一个字符串数组:ie

const foo = ['a', 'b', 'c'].
我如何键入
foo.includes
,以便
foo.includes(1)
返回false并且TS不会抛出错误,而不使用
any
@TS ignore

我收到的错误是,
类型为“1”的参数不可分配给类型为“string”的参数
,我同意这一点,但它仍然允许这样做

我100%理解是的,我有一个
字符串数组
,当然传入
数字
将返回false,但这仍然应该是类型安全的

我尝试了很多选择,但都没有用


理想情况下,我希望可以使用一些泛型类型或我缺少的某些类型,以便安全地键入此类型,而不必忽略任何代码。

您可以键入包含数字的数组

const foo: Array<string | number> = ['a', 'b', 'c']
constfoo:Array=['a','b','c']

您可以键入数组以包含数字

const foo: Array<string | number> = ['a', 'b', 'c']
constfoo:Array=['a','b','c']

您实际上是在键入
foo.includes(1)
还是
foo.includes(myVar)
其中myVar是一个数字?在调用此函数之前,您不能检查
myVar
的类型吗?您实际上是在键入
foo.includes(1)
还是
foo.includes(myVar)
,其中myVar是一个数字?在调用此之前,您不能检查
myVar
的类型吗?谢谢!看起来就是这样!我最初缺少的是将
foo
设置为
string | number
,以允许
.includes
不抱怨。现在我有点难过,因为我觉得我应该能够说
foo.includes(任何东西)
除了上面提到的,我觉得我应该能够说
foo.includes(true)
。为了让TS不抱怨,我必须键入
foo:Array
,这在技术上感觉很奇怪,因为我的初衷是要有一个
字符串数组
:(强键入数据结构只是为了让它传递您想要的任何类型,这有什么意义呢?
foo
不是一个可以包含数字的数组。因此,可能的解决方案是:
const isinclude=typeof 4=='string'&&['a','b','c']。包括(4)
。但是我这里的解决方案不是一个解决方案,因为在另一种情况下,(即:数组包含值的并集),在尝试
之前使用javascript进行打字检查并不容易。includes
谢谢!看起来就是这样!我最初缺少的是将
foo
设置为
string | number
,以允许
includes
不抱怨。这完全有道理。现在我在TS有点难过,因为我觉得我应该能够做到这一点o说
foo.includes(任何东西)
除了上面提到的,我觉得我应该能够说
foo.includes(true)
。为了让TS不抱怨,我必须键入
foo:Array
,这在技术上感觉很奇怪,因为我的初衷是拥有一个
字符串数组(强键入数据结构只是为了让它传递您想要的任何类型,这有什么意义呢?
foo
不是一个可以包含数字的数组。因此,可能的解决方案是:
const isinclude=typeof 4=='string'&&['a','b','c']。包括(4)
。但是我这里的解决方案不是一个解决方案,因为在另一种情况下,(即:数组包含一个值的并集),在尝试
.includes