Untitled

mail@pastecode.io avatarunknown
typescript
a month ago
1.7 kB
1
Indexable
Never
type Coffee = 'espresso' | 'latte' | 'cappuccino' | 'black';

interface SuperPower {
  name: string;
  description: string;
}

interface GoodProgrammer {
  name: string;
  yearsOfExperience: number;
  favoriteProgrammingLanguage: 'TypeScript' | 'JavaScript' | 'Python' | 'Java' | 'Others...';
  coffeeConsumptionPerDay: number;
  favoriteCoffeeType: Coffee;
  hasRubberDuck: boolean; // Rubber duck debugging!
  canCodeWithoutGoogle: boolean; // Truly a superpower
  spokenLanguages: string[]; // Not programming languages, but real languages!
  superPowers: SuperPower[]; // Because every good programmer has super powers
  hasEverDreamtInCode: boolean;
  mostUsedPhrase: string; // "It works on my machine!"
  debugMethod: 'print' | 'console.log' | 'prayer' | 'dark magic';
  prefersTabsOrSpaces: 'tabs' | 'spaces' | 'who cares, as long as it works';
  favoriteError: string; // "Unexpected token < in JSON at position 0"
}

// Example:
const johnDoe: GoodProgrammer = {
  name: 'John Doe',
  yearsOfExperience: 5,
  favoriteProgrammingLanguage: 'TypeScript',
  coffeeConsumptionPerDay: 5,
  favoriteCoffeeType: 'latte',
  hasRubberDuck: true,
  canCodeWithoutGoogle: false,
  spokenLanguages: ['English', 'Binary'],
  superPowers: [
    { name: 'Infinite patience', description: 'Can wait for npm install to finish without checking Twitter' },
    { name: 'Bug whisperer', description: 'Can talk to bugs and convince them to leave' }
  ],
  hasEverDreamtInCode: true,
  mostUsedPhrase: 'It works on my machine!',
  debugMethod: 'console.log',
  prefersTabsOrSpaces: 'spaces',
  favoriteError: 'Cannot read property \'undefined\' of undefined'
};