129. 字符串生成函数
困难
实现一个高级工具类型 Format<T extends string>
,根据传入的字符串模板 T
,返回一个类型。
该模板字符串可能包含占位符(比如 %s
和 %d
),这些占位符代表不同的参数类型。
具体来说:
%s
应该匹配一个string
类型的参数。%d
应该匹配一个number
类型的参数。
要求:
- 你需要根据模板字符串中的占位符动态地生成类型,这些占位符应该按照顺序匹配传入的参数类型。
- 对于不含占位符的字符串,返回
string
类型。
以下是一些例子的分析:
-
例子1:
type FormatCase1 = Format<"%sabc"> // FormatCase1 : string => string
%s
表示需要一个string
类型的参数,后面的abc
是固定文本,因此返回类型是string => string
,表示输入一个string
类型的参数,返回string
类型的结果。
-
例子2:
type FormatCase2 = Format<"%s%dabc"> // FormatCase2 : string => number => string
%s
表示需要一个string
类型的参数,%d
表示需要一个number
类型的参数。返回类型应是string => number => string
,表示先传入一个string
,再传入一个number
,最后返回一个string
。
-
例子3:
type FormatCase3 = Format<"sdabc"> // FormatCase3 : string
- 这个模板字符串中没有占位符,只有普通的文本,所以返回类型是
string
。
- 这个模板字符串中没有占位符,只有普通的文本,所以返回类型是
-
例子4:
type FormatCase4 = Format<"sd%abc"> // FormatCase4 : string
%
后面没有具体的占位符格式,这样的情况下也应该返回string
。