TypeScript Duck Typisierung, starke statische Eingabe erwünscht

8

TypeScript verwendet die Kompilierzeit (statisch) duck typing .

Ich bin ein Fan davon, primitive Typen zu erweitern, um eine falsche Substitution zu verhindern. Zum Beispiel möchte ich einer Kreditkartennummer eine Kreditkartennummer anstelle einer ganzen Zahl geben. Ich habe kürzlich versucht, dies in TypeScript mit einem Paar Schnittstellen zu tun, die String erweitern, und herausgefunden, dass sie sich gegenseitig ersetzen (und diese Zeichenfolge ersetzt beide).

Ich möchte wirklich nominale Typisierung kompilieren. Irgendwelche Ideen?

    
Eric 26.03.2014, 23:02
quelle

1 Antwort

3

Ich habe einen Weg gefunden, stärker zu tippen. Ich mag es nicht sehr. Man fügt jedem Typ ein spezielles Feld oder eine Methode hinzu, die es mit anderen unvereinbar macht, die als Enten verwechselt werden könnten.

Im Folgenden ist es nicht möglich, einen Papagei durch einen Duck zu ersetzen, da die Duck-Klasse eine zusätzliche Methode besitzt (Parrot schlägt also bei der Ente fehl). Spatzen und Papageien sind anscheinend bei der Typisierung von Enten ersetzbar, weil es nichts gibt, was ein Papagei tun kann, was ein Spatz nicht kann, und umgekehrt. Natürlich kann eine Ente einen Papagei ersetzen, denn wenn es wie ein Papagei klingt, ist es ein Papagei.

Testen Sie mit www.typescriptlang.org/Spielground/ :

%Vor%

Praktischer würde ich das machen (was in meiner IDE funktioniert, aber nicht auf dem Spielplatz):

%Vor%

Sehr geschmacklos und eine Gelegenheit für eine andere Schnittstelle, versehentlich den gleichen Feldnamen zu verwenden. Ich nehme an, man könnte dem Anti-Enten-Mitglied ein zufälliges Element hinzufügen.

    
Eric 26.03.2014 23:02
quelle