Como você usaria o TypeScript para melhorar a digitação antecipada e a verificação de tipo para chamadas de função JQueryUI
-
12-12-2019 - |
Pergunta
Ao trabalhar com um widget jQuery UI, muitas vezes você acaba com algo que segue este padrão:
$("#someId").someWidget("option", "someOption", valor);
Existe uma boa maneira de modelar essa interação para obter alguma verificação de tipo útil do TypeScript?Tecnicamente você provavelmente tem o método definido assim:
algumWidget(opçãoLiteral:string, opçãoNome:string, optionValue:qualquer):JQuery;
(Modelado com base nas definições de tipo de UI jQuery fornecidas)
Portanto, o valor da opção é basicamente “qualquer”, independentemente do nome da opção.Existe uma maneira de sobrecarregar ainda mais a definição do tipo e talvez fazer alguma correspondência de padrões em optionName?Ou há planos para isso?
Solução
Você pode querer se aprofundar no exemplo da UI do jQuery,
http://www.typescriptlang.org/Samples/#Warship
que aborda como estender o tipo de interface jQuery com métodos adicionais.
O tipo jQuery é um tipo de interface e os tipos de interface são abertos no TypeScript, o que significa que unidades de compilação posteriores podem adicionar membros ao tipo.Seu exemplo seria escrito como,
interface JQuery {
someWidget(optionLiteral: string, optionName: string, optionValue: any): JQuery
}
Quanto à sobrecarga, os métodos podem ser sobrecarregados no tipo, mas não no valor.A sobrecarga de valores seria uma boa sugestão no site CodePlex.