J'ai le code tapuscrit suivant:Type de type typographique nécessitant un attribut quelconque d'un objet à définir: comment?
interface qux {
foo?: string;
bar?: number | string;
}
function foobar(x: qux) { ...; something_frobz(x); ...; }
Problème: Je peux appeler foobar("hello, world")
, même si cela provoque something_frobz
se conduisent mal. Je voudrais attraper et rejeter les appels à foobar
avec l'argument de la chaîne à la compilation, tout en modifiant la structure de qux aussi peu que possible. Quelle est la meilleure façon d'y arriver?
Ma propre solution est de faire un champ requis; ce champ a une valeur par défaut sensée, et la chaîne AFAIK n'a pas de champs avec le même nom. C'est un peu un hack, mais ça marche.
Une autre approche pourrait être d'avoir foobar prendre un type d'union de first-field-is-required | second-field-is-required | ... | hundredth-field-is-required
, mais je dois maintenir N copies presque identiques de qux (N> 1) et qui ne va bien.
Y a-t-il quelque chose de mieux?
Vérifiez cette question: [Soutenir certains (nominal) non structurel de type correspondant] (https://github.com/Microsoft/TypeScript/issues/202) –