This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
18 lines
611 B
TypeScript
18 lines
611 B
TypeScript
// Compares to Array<T> objects for equality, ignoring order
|
|
export function scrambledEqual<T>(array1: readonly T[], array2: readonly T[]) {
|
|
const sortedArray1 = sort(array1);
|
|
const sortedArray2 = sort(array2);
|
|
return sequenceEqual(sortedArray1, sortedArray2);
|
|
function sort(array: readonly T[]) {
|
|
return array.slice().sort();
|
|
}
|
|
}
|
|
|
|
// Compares to Array<T> objects for equality in same order
|
|
export function sequenceEqual<T>(array1: readonly T[], array2: readonly T[]) {
|
|
if (array1.length !== array2.length) {
|
|
return false;
|
|
}
|
|
return array1.every((val, index) => val === array2[index]);
|
|
}
|