[英]How to perform a forEach loop on a variable defied as string | Array<string>?
I am using the airbnb typescript style guideline and I have defined a type like this:我正在使用 airbnb typescript 样式指南,并且我定义了这样的类型:
export interface Question {
id: number;
type: 'text' | 'multipleOption' | 'checkBox';
question: string;
answer: string | Array<string>;
}
A variable that fits this interface is created and I need to perform a forEach on the answer to check some conditions, but I get a linting error saying that创建了一个适合此接口的变量,我需要在答案上执行 forEach 以检查某些条件,但我收到一个 linting 错误说
Property 'forEach' does not exist on type 'string | string[]'.
Property 'forEach' does not exist on type 'string'
I would like to perform a check that enables me to perform this foreach without modifying the guideline configuration or changing the type in the interface Question definition.我想执行一项检查,使我能够在不修改指南配置或更改接口问题定义中的类型的情况下执行此 foreach。
I have tried:我努力了:
if (question.answer.constructor === Array) {
question.answer.forEach(...)
}
if (Array.isArray(question.answer)) {
question.answer.forEach(...)
}
if (typeof question.answer !== 'string') {
question.answer.forEach(...)
}
But none of the above removes the lining error.但是以上都没有消除衬里错误。
if (Array.isArray(question.answer)) {
(question.answer as Array<string>).forEach(...)
}
also you can do this to have a uniform code你也可以这样做以获得统一的代码
let answers : Array<string> = [];
if (Array.isArray(question.answer)) {
answers = [...question.answer];
} else if (!!question.answer){
answers = [question.answer];
}
answers.forEach(answer => ....)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.