routes[window.location.pathname];
вернёт ошибку, поскольку ты будешь использовать тип string, которого в объекте нет (только заданные ключи), либо использовать тип { [key: string]: string }
. new Array(256).fill(0).map((_, i) => i).join(" | ")
и скопируй результат в тип byte. T[keyof T]
и передаёшь interface IUser {
name: string;
role: IRole;
}
string | IRole
.type Extractor<T, X> = (entry: T) => X;
const groupBy = <T, X>(
collection: T[],
mapper: Extractor<T, X>
): Map<X, T[]> => collection.reduce((accumulator, entry) => {
const key = mapper(entry);
if (accumulator.has(key)) {
accumulator.get(key)!.push(entry);
return accumulator;
}
accumulator.set(key, [entry]);
return accumulator;
}, new Map<X, T[]>());
function f(someObj: T1, someEnum: typeof E1): string;
function f(someObj: T2, someEnum: typeof E2): string;
function f(someObj: T1 | T2, someEnum: typeof E1 | typeof E2): string {
const typedSomeObj = someObj as T1 & T2;
return typedSomeObj[someEnum.a];
}
typescript
+ reducer
.