https://www.typescriptlang.org/docs/handbook/2/objects.html
interface ArrayType<Type> {
length: number;
slice(start: number, end: number): Type;
}
function getShuffledArray<Type extends ArrayType<Type>>(array: Type): Type {
for (let i = array.length - 1; i > 0; i -= 1) {
const j = Math.floor(Math.random() * (i + 1));
const temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
function getArrayPart<Type extends ArrayType<Type>>(array: Type, startIndex: number, endIndex: number): Type {
if (endIndex > array.length) {
return array.slice(startIndex, array.length);
}
return array.slice(startIndex, endIndex);
}
typescript
generics