考虑这个例子:
type SomeType = {
paymentData?: {
paymentMethod?: string;
}
}
const someObj: SomeType = {};
const someTest = ['creditCard', 'payPal'].includes(someObj.paymentData?.paymentMethod);
Run Code Online (Sandbox Code Playgroud)
这在 TypeScript 中不起作用,因为它推断数组元素的类型,因此string它要求与函数一起使用的值includes也是类型string,但someObj.paymentData?.paymentMethod可能是未定义的,即类型是string | undefined。我无法使用非空断言运算符 ( !),因为它无法在可选链接之后使用。
就 JavaScript 而言,如果includes使用 进行检查则完全没问题undefined,只是 TypeScript 对此不满意。有哪些好的方法可以满足 TypeScript 的需求?