Skip to content

Instantly share code, notes, and snippets.

@anartzdev
Created November 15, 2023 12:38
Show Gist options
  • Save anartzdev/1853e3720810eeacb82aac4492d92b83 to your computer and use it in GitHub Desktop.
Save anartzdev/1853e3720810eeacb82aac4492d92b83 to your computer and use it in GitHub Desktop.
Macro-nutrientes
// Import stylesheets
import './style.css';
// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;
appDiv.innerHTML = `<p>Prueba</p>`
type Genre = 'men' | 'women';
const KCAL_PER_GR = {
PROTEIN: 4,
CH: 4,
FAT: 9,
};
const ActivityLevels = {
sedentary: 1.2,
low_active: 1.375,
moderately_active: 1.55,
very_active: 1.725,
extremely_active: 1.9,
} as const;
type ActivityLevel = keyof typeof ActivityLevels;
interface PersonData {
genre: Genre;
activityLevel: ActivityLevel;
height: number;
weight: number;
age: number;
}
const data: PersonData = {
genre: 'men',
activityLevel: 'moderately_active',
height: 186,
weight: 73.4,
age: 37,
};
console.log(data);
// ================================================================================
// Calcular calorias de mantenimiento
// ================================================================================
/*1. Gasto Calórico Basal (BMR):
La ecuación de Harris-Benedict revisadas por Mifflin y St Jeor en 1990:
Para hombres: BMR = (10 * peso en kg) + (6.25 * altura en cm) - (5 * edad en años) + 5
Para mujeres: BMR = (10 * peso en kg) + (6.25 * altura en cm) - (5 * edad en años) - 161
*/
const BMR =
data.genre === 'men'
? 10 * data.weight + 6.25 * data.height - 5 * data.age + 5
: 10 * data.weight + 6.25 * data.height - 5 * data.age - 161;
/*2. Total de Gasto Calórico Diario (TDEE):
Después de calcular el BMR, debes ajustarlo según el nivel de actividad física del individuo. Aquí están los factores típicos de actividad:
Sedentario (poco o ningún ejercicio): BMR * 1.2
Ligeramente activo (ejercicio ligero de 1-3 días a la semana): BMR * 1.375
Moderadamente activo (ejercicio moderado de 3-5 días a la semana): BMR * 1.55
Muy activo (ejercicio intenso de 6-7 días a la semana): BMR * 1.725
Extremadamente activo (entrenamiento intensivo y físico diario): BMR * 1.9*/
const TDEE = BMR * ActivityLevels[data.activityLevel];
console.log(TDEE, 'kcal');
/**
* Fórmula General para la Ingesta de Proteínas:
Ingesta de Proteínas (en gramos) = Peso Corporal (en kilogramos) * Cantidad de Proteínas por Kilogramo de Peso
Cantidad de Proteínas por Kilogramo de Peso:
Sedentario (poco o ningún ejercicio): 1.2 a 1.4 gramos por kilogramo de peso.
Ligeramente activo (ejercicio ligero de 1-3 días a la semana): 1.4 a 1.6 gramos por kilogramo de peso.
Moderadamente activo (ejercicio moderado de 3-5 días a la semana): 1.6 a 1.8 gramos por kilogramo de peso.
Muy activo (ejercicio intenso de 6-7 días a la semana): 1.8 a 2.0 gramos por kilogramo de peso.
Extremadamente activo (entrenamiento intensivo y físico diario): 2.0 a 2.2 gramos por kilogramo de peso.
*/
const proteinsBasesActivityLevel = {
sedentary: [1.2, 1.4],
low_active: [1.4, 1.6],
moderately_active: [1.6, 1.8],
very_active: [1.8, 2.0],
extremely_active: [2.0, 2.2],
};
const minProteinsConsumeInGr =
data.weight * proteinsBasesActivityLevel[data.activityLevel][0];
const maxProteinsConsumeInGr =
data.weight * proteinsBasesActivityLevel[data.activityLevel][1];
console.log('Min (gr) proteins: ', minProteinsConsumeInGr);
console.log('Max (gr) proteins: ', maxProteinsConsumeInGr);
/**
* Fórmula General para la Ingesta de carbohidratos:
La fórmula general para calcular la ingesta de carbohidratos se basa en el porcentaje de calorías totales que deseas obtener de los carbohidratos. Aquí está la fórmula:
Ingesta de Carbohidratos (en gramos) = (Porcentaje de Calorías de Carbohidratos / 100) * Total de Calorías Diarias / 4
Donde:
Porcentaje de Calorías de Carbohidratos es la proporción de calorías totales que deseas obtener de los carbohidratos. Por ejemplo, si deseas que el 50% de tus calorías diarias provengan de los carbohidratos, este valor sería 50.
Total de Calorías Diarias es la cantidad total de calorías que deseas consumir en un día.
La división por 4 se debe al hecho de que los carbohidratos proporcionan aproximadamente 4 calorías por gramo.
Aquí tienes un ejemplo de cómo utilizar esta fórmula:
Supongamos que deseas consumir 2500 calorías al día y deseas que el 55% de esas calorías provengan de los carbohidratos.
Ingesta de Carbohidratos (en gramos) = (55 / 100) * 2500 / 4 = 343.75 gramos de carbohidratos al día
En este caso, necesitarías consumir aproximadamente 343.75 gramos de carbohidratos al día para cumplir con tu objetivo del 55% de calorías de carbohidratos en una dieta de 2500 calorías. Ten en cuenta que esta es solo una estimación y que las necesidades individuales pueden variar según el nivel de actividad y los objetivos personales.
*/
const carboHydratePercetangePerDay = 50;
const eatCarboHydratesGr = (carboHydratePercetangePerDay / 100) * (TDEE / 4);
/**Fórmula General para la Ingesta de carbohidratos
*
* https://menjasa.es/revista/es/como-calcular-carbohidratos/
*/
console.log(
eatCarboHydratesGr,
'gr (CH) with ',
carboHydratePercetangePerDay,
'%'
);
// Proteina 1gr = 4kcal
// Obtener gramos de proteinas = TDEE * (17%) / (kcal por gramo de proteina)
const omsRecomendationProteins = (TDEE * 0.17) / KCAL_PER_GR.PROTEIN;
console.log('PROTEINS (OMS)', omsRecomendationProteins);
// CH 1gr = 4kcal
// Obtener gramos de ch = TDEE * (58%) / (kcal por gramo de ch)
const omsRecomendationChs = (TDEE * 0.58) / KCAL_PER_GR.CH;
console.log('CHs (OMS)', omsRecomendationChs);
// 17%, hidratos de carbono 58% y lípidos 25%)
// CH 1gr = 9kcal
// Obtener gramos de grasas = TDEE * (25%) / (kcal por gramo de grasas)
const omsRecomendationGrasas = (TDEE * 0.25) / KCAL_PER_GR.FAT;
console.log('Grasas (OMS)', omsRecomendationGrasas);
// 17%, hidratos de carbono 58% y lípidos 25%)
// Grasas saturadas (entre un 7-10%): 199 Kcal/9 = 22 g, 284/9 = 31,5 g
const saturatedFatMinKCal = TDEE * 0.07;
const saturatedFatMaxKcal = TDEE * 0.1;
const saturatedFatMinGr = Math.floor(saturatedFatMinKCal / KCAL_PER_GR.FAT);
const saturatedFatMaxGr = Math.floor(saturatedFatMaxKcal / KCAL_PER_GR.FAT);
console.log(
'Saturate fat range in gr: ',
saturatedFatMinGr,
'-',
saturatedFatMaxGr
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment