这个错误通常发生在将一个 (string | undefined)[]
类型的数组赋值给一个 string[]
类型的数组时。解决方法有以下几种:
(string | undefined)[]
类型断言为 string[]
类型。但是要注意,如果数组中存在 undefined
值,类型断言可能会掩盖这个问题。const arr1: (string | undefined)[] = ['a', 'b', undefined];
const arr2: string[] = arr1 as string[];
!
可以告诉 TypeScript,不会出现 undefined
值。但是要注意,在使用非空断言运算符之前,确保数组中不会出现 undefined
值,否则会引发运行时错误。const arr1: (string | undefined)[] = ['a', 'b', undefined];
const arr2: string[] = arr1.filter(Boolean) as string[];
undefined
值:
通过使用 filter
方法过滤数组中的 undefined
值,然后将结果赋值给 string[]
类型的数组。const arr1: (string | undefined)[] = ['a', 'b', undefined];
const arr2: string[] = arr1.filter((item): item is string => item !== undefined);
以上是几种常见的解决方法,选择其中一种适合你的情况即可。