ошибка не соотвествия типов
2 вопроса:
1: почему ts ругается на ${R[K]}
(is not assignable to type string | ....) и как это исправить
2: как то можно сделать это же без явного привидения типа recordWithRoot as ...
const getRecordWithRoot = <T extends string, R extends {}>(
root: T,
record: R
) => {
const recordWithRoot = {
ROOT: root,
};
for (const key in record) {
Object.defineProperty(recordWithRoot, key, {
get: () => {
return root + record[key];
},
});
}
return recordWithRoot as { [K in keyof R]: `${T}${R[K]}` } & { ROOT: T };
};
const some = getRecordWithRoot(`core/A` as const, {
get A() {
return `/a` as const;
},
get B() {
return `/b` as const;
},
});
// result
// ROOT => core/A
// A => core/A/a
// B core/A/b
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
const getRecordWithRoot = <T extends string, R extends {}>(
const getRecordWithRoot = <T extends string, R extends { [key: string]: string | number | bigint | boolean | null | undefined }>(