type A = EnforcedString<'pk_'>; // pk_${string}
type B = EnforcedString<string, 'ABC'>; // ${string}ABC${string}
type C = EnforcedString<string, string, '.json'>; // ${string}.json
type D = EnforcedString<'pk_', 'ABC', '.json'>; // pk_${string}ABC${string}.json
type E = EnforcedString<string, string, string>; // string
EnforcedString
Constructive constraint builder:
If a knob is the wide
string, that knob imposes no constraint. If all three arestring, the result is plainstring.