type Services = { [name: string]: A; }; type Objects = Array<{ [name: string]: (param?: A) => boolean; }>; export function inject(services: Services, objects: Objects) { for (let i = 0, count = objects.length; i < count; i++) { for (const name in services) { if (typeof objects[i][name] === "function" && !objects[i][name]()) { objects[i][name](services[name]); } } } }