import type { Int } from "."; import type { Args, Fn } from "../../HKT"; import type { Every } from "../../List/Every"; import type IsDigitFn from "../../Str/IsDigit"; import type { ToChars } from "../../Str/ToChars"; import type { AssertInt } from "../../helpers"; import type { Abs } from "../Abs"; /** * Parse a string to an {@link Int}. Return `never` if the string is not a valid integer. * * Type safety is **not guaranteed**. * * Sig: `(s: string) => Int` */ export type FromStrUnsafe = AssertInt< string extends S ? Int : S extends `${infer N extends number}` ? Every}`>> extends true ? N : never : never >; /** * [Fn] Parse a string to an {@link Int}. Return `never` if the string is not a valid integer. * * Type safety is **not guaranteed**. * * Sig: `(s: string) => Int` */ export default interface FromStrUnsafeFn extends Fn<[string], Int> { def: ([s]: Args) => FromStrUnsafe; }