@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
15 lines (13 loc) • 500 B
text/typescript
export type Namespace<T extends string, TBase extends string> = {
[key in T]: `${TBase}${key}`;
};
export function createNamespace<T extends string, TBase extends string>(
baseUri: TBase,
localNames: T[]
): Namespace<T, TBase> {
return localNames.reduce(
(obj: Namespace<T, TBase>, localName): Namespace<T, TBase> => ({ ...obj, [localName]: `${baseUri}${localName}` }),
// eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter
{} as Namespace<T, TBase>
);
}