Búsqueda de sitios web

typescript - ¿Puede TaggedTemplate tener firmas de sobrecarga con un cierto argumento literal de cadena?


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`;
  • Tengo una función TaggedTemplate
  • Puedo controlar sus firmas
  • Quiero que devuelva string en una llamada normal
  • Quiero que devuelva 123 cuando un argumento sea strange (NG)

Básicamente es posible para una función normal mediante sobrecarga, pero ¿cómo podemos hacerlo con una función TaggedTemplate? ¿Es posible sobrecargarla con un argumento determinado?

Aquí hay un ejemplo funcional.

Gracias.

Respuesta #1

Esto actualmente no es posible y hay un problema abierto en el rastreador de problemas de TS para agregar soporte para esto.