@halospv3/hce.shared-config
Version:
Automate commit message quality, changelogs, and CI/CD releases. Its `main` entry point is a Semantic Release config. Functions and classes are exposed for customization. An ESLint config, a Commitlint config, and addl. resources for .NET projects are als
19 lines • 709 B
text/typescript
//#region src/utils/Exact.d.ts
/**
* ### `Exact<T, S>`
*
* [issue](https://github.com/microsoft/TypeScript/issues/12936#issuecomment-2816928183)\
* [author](https://github.com/ahrjarrett)\
* license: unlicensed[!]
* @see
* - {@link https://tsplay.dev/NnGG6m}
*/
type Exact<T, S> = [keyof T] extends [keyof S] ? [T] extends [S] ? { [K in keyof T]: T[K]; } : S : { [K in keyof T as K extends keyof S ? never : K]: TypeError<`Excess: '${Coerce<K>}'`>; };
interface TypeError<Message> {
[' TypeError']: Message;
}
// prior art: use arktype's ^^^ leading whitespace trick to avoid collisions
type Coerce<T> = `${T & (string | number)}`;
//#endregion
export { Exact };
//# sourceMappingURL=Exact.d.mts.map