Skip to content

Instantly share code, notes, and snippets.

@travishorn
Last active January 22, 2023 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save travishorn/e2a174dff566e02396db18a2a37f3514 to your computer and use it in GitHub Desktop.
Save travishorn/e2a174dff566e02396db18a2a37f3514 to your computer and use it in GitHub Desktop.
TypeScript Generics
function getFilledArray<T>(value: T, n: number): T[] {
return Array(n).fill(value);
}
let stringArray: string[];
let numberArray: number[];
let personArray: {name: string, age: number}[];
let coordinateArray: [number, number][];
// Write your code below:
stringArray = getFilledArray<string>('hi', 6);
numberArray = getFilledArray<number>(9, 6);
personArray = getFilledArray<{name: string, age: number}>({name: 'J. Dean', age: 24}, 6);
coordinateArray = getFilledArray<[number, number]>([3,4], 6);
type Human = {name: string, job: string};
type Dog = {name: string, tailWagSpeed: number};
type Family<T> = {
parents: [T, T], mate: T, children: T[]
};
//Do not change the code above this line.
//Provide type annotations for the variables below:
let theFamily: Family<number> = {
parents: [3, 4], mate: 9, children: [5, 30, 121]
};
let someFamily: Family<boolean> = {
parents: [true, true], mate: false,
children: [false, false, true, true]
};
let aFamily: Family<Human> = {
parents: [
{name: 'Mom', job: 'software engineer'},
{name: 'Dad', job: 'coding engineer'}
],
mate: {name: 'Matesky', job: 'engineering coder'},
children: [{name: 'Babesky', job: 'none'}]
};
let anotherFamily: Family<Dog> = {
parents: [
{name: 'Momo', tailWagSpeed: 3},
{name: 'Dado', tailWagSpeed: 100}
],
mate: {name: 'Cheems', tailWagSpeed: 7},
children: [
{name: 'Puppin', tailWagSpeed: 0.001},
{name: 'Puppenaut', tailWagSpeed: 0.0001},
{name: 'Puppenator', tailWagSpeed: 0.01}
]
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment