typescript - Poate TaggedTemplate să aibă semnături supraîncărcate cu un anumit argument literal de tip șir?


declare function taggedFn(x: ['strange']): 123;
declare function taggedFn(x: TemplateStringsArray): string;

// OK
var v1: string = taggedFn`ordinary`;

// NG: How can I hit the ['strange'] signature?
var v2: 123 = taggedFn`strange`;
  • Am o funcție TaggedTemplate
  • Pot să-i controlez semnăturile
  • Vreau să returneze string la un apel normal
  • Vreau să returneze 123 atunci când un argument este strange (NG)

Practic, este posibil pentru o funcție normală prin supraîncărcare, dar cum putem face asta cu o funcție TaggedTemplate? Este posibil să o supraîncărcăm cu un anumit argument?

Iată un exemplu funcțional.

Mulțumesc.

Răspuns #1

Acest lucru nu este posibil în prezent și există o problemă deschisă în tracker-ul de probleme TS pentru a adăuga suport pentru acest lucru.