TypeScript in .cshtml Razor-Dateien

8

Ich beginne ein neues Projekt mit ASP.NET-MVC-Framework. Ich würde TypeScript in diesem Projekt anstelle von JavaScript verwenden. TypeScript wird von Visual Studio problemlos unterstützt, scheint jedoch nicht (vollständig) kompatibel mit den .cshtml-Dateien zu sein. Ich bin in der Lage, meine Klassen innerhalb der .ts-Datei zu erstellen und diese Klassen innerhalb meiner .cshtml-Datei aufzurufen, ist das Problem, wenn ich Parameter an das Objekt in der .cshtml -Datei übergeben TypSafety wird ignoriert und die Funktion wird ausgeführt, als ob a Typ wurde nie definiert.

.ts-Datei

%Vor%

.cshtml-Datei

%Vor%

Wie Sie sehen, übergebe ich eine Zeichenfolge an den Konstruktor, obwohl ich den Parameter eindeutig so definiert habe, dass er nur Zahlen akzeptiert, aber TypeSafely wird ignoriert und das TypeScript / JavaScript wird so ausgeführt, als gäbe es kein Problem.

Beide Dateitypen wurden von Microsoft erfunden, daher bin ich leicht überrascht, dass sie nicht ein bisschen freundlicher miteinander sind. Dies ist nicht das Ende der Welt, zumindest kann ich noch Objektorientierte Programmierung verwenden, ich bin nur neugierig, ob jemand anderes dies erfahren hat und kann mir vielleicht eine kurze Erklärung geben.

    
Versatile 04.11.2016, 18:36
quelle

1 Antwort

6

TypeScript transpiler prüft und transpiliert nur Dateien, die nur Folgendes enthalten:

  • Javascript
  • Javascript mit Syntaxcode, der von TypeScript hinzugefügt wurde (statische Typisierung, generische Klasse usw.)

CSHTML-Dateien werden grundsätzlich erstellt, um Razor / C # -Code und natürlich HTML / JavaScript / CSS zu enthalten.

Einige Entwickler versuchen, den Cshtml-Dateien einen JavaScript-Code und ein CSS-Stylesheet direkt hinzuzufügen, und das ist keine gute Übung.

JavaScript-Code und CSS-Stil sollten in einer eigenen Datei sein. Dann referenzieren Sie die Datei mit dem script (Javascript) oder style (CSS) -Tag in Ihrem CSHTML.

Javascript-Code direkt in Ihre Ansicht einfügen (CSHTML oder nur HTML) wird nicht empfohlen, da es das folgende Prinzip von Unauffällig durchbricht JavaScript :

  

Trennung der Funktionalität (der "Verhaltensebene") von der Struktur / Inhalt und Präsentation einer Webseite (Quelle Wikipedia )

Einige ASP.Net MVC-Entwickler setzen ihren JavaScript-Code weiterhin direkt in ihre Razor-Ansichten ein, da sie einige Daten, die vom Ansichtsmodell stammen, direkt an den JavaScript-Code übergeben müssen. Wenn der Javascript-Code bereits in der Ansicht ist, ist es einfach, die Daten ohne Komplikationen zu übergeben. Aber ich sagte schon, das ist nicht gut ;-).

Diese Art von Dingen, die die Unobtrusive JavaScript Principes bricht, kann vermieden werden. Alle Daten, die von JavaScript-Code gelesen werden müssen, sollten unter Verwendung des Datenattributs in Ihren HTML-Elementen gespeichert werden, z.

%Vor%

Dann verwenden Sie in Ihrem TypeScript-Code einfach jQuery (oder Vanille-JavaScript), um die Daten, die Sie in Ihrer CSHTML-Ansicht festgelegt haben, so zu erhalten:

%Vor%

Verweisen Sie danach die generierte js-Datei von TypeScript in Ihre CSHTML.

Ich hoffe, es hilft.

    
CodeNotFound 04.11.2016, 19:24
quelle