We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
思路:
NumberUnion
S extends `${infer L extends NumberUnion}${infer Rest}` // 这样L便可以推断成数字了(0-9)。
AddNumber
type AddNumber<N extends number, M extends number> = number extends N ? number extends M ? 0 : 0 : [...NumberToArr<N>, ...NumberToArr<M>]["length"] & number;
MultiplyTen
type MultiplyTen<N extends number> = number extends N ? 0 : [ ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N> ]["length"] & number;
// 单个数字类型 type NumberUnion = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9; // 将数字转为相同大小的数组 NumberToArr<3> // 结果是[1,1,1] type NumberToArr<N extends number, Count extends 1[] = []> = Equal< N, Count["length"] > extends true ? Count : NumberToArr<N, [...Count, 1]>; // 将两个数字相加 AddNumber<1, 2> // 3 type AddNumber<N extends number, M extends number> = number extends N ? number extends M ? 0 : 0 : [...NumberToArr<N>, ...NumberToArr<M>]["length"] & number; // 将某个数字乘10 MultiplyTen<10> // 100 type MultiplyTen<N extends number> = number extends N ? 0 : [ ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N>, ...NumberToArr<N> ]["length"] & number; type ToNumber< S extends string, Res extends number = 0 > = S extends `${infer L extends NumberUnion}${infer Rest}` ? ToNumber<Rest, AddNumber<L, MultiplyTen<Res>>> : S extends "" ? Res : never;
The text was updated successfully, but these errors were encountered:
No branches or pull requests
思路:
NumberUnion
AddNumber
, 利用数组实现MultiplyTen
, 利用数组实现,写得比较死板The text was updated successfully, but these errors were encountered: