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