interface Rule { dirty : boolean ; isNew : boolean ; deleted : boolean ; insert_date : number ; update_date : number ; delete_date : number ; updaterId : string ; words : Word [ ] ; wordGroups : WordGroup [ ] ; hideNodes : HTMLElement [ ] ; searchNodes : HTMLElement [ ] ; hiddenCount : number ; staticXpath : any ; appliedWords : any [ ] ; appliedWordsMap : object ; is_disabled : boolean ; rule_id : number ; user_identifier : string ; global_identifier : string ; title : string ; url : string ; site_regexp : string ; example_url : string ; search_block_css : string ; search_block_xpath : string ; search_block_by_css : boolean ; hide_block_css : string ; hide_block_xpath : string ; hide_block_by_css : boolean ; block_anyway : boolean ; specify_url_by_regexp : boolean ; existing : boolean ; } const eachWords = ( rule , func ) => { for ( let word of rule . words ) { func ( word ) ; } for ( let group of rule . wordGroups ) { for ( let word of group . words ) { func ( word ) ; } } } ;