rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
20 lines (17 loc) • 560 B
TypeScript
import type { Args, Fn } from "../HKT";
import type { List } from "../List";
/**
* Split a string by a separator.
*
* Sig: `(sep: string, s: string) => List<string>`
*/
export type Split<Sep extends string, S extends string> =
S extends `${infer Head}${Sep}${infer Tail}` ? [Head, ...Split<Sep, Tail>] : [S];
/**
* [Fn] Split a string by a separator.
*
* Sig: `(sep: string, s: string) => List<string>`
*/
export default interface SplitFn extends Fn<[string, string], List<string>> {
def: ([sep, s]: Args<this>) => Split<typeof sep, typeof s>;
}