2017-04-25 4 views
0

Meine Situation:Typ-Check eine Reihe von Typoskript Code

  • Ich habe eine Bibliothek Typinformationen für API-Antworten enthält. (zB: Holen eines Benutzerobjekts gibt ein Objekt mit { id: number, name: string } zurück).
  • Ich möchte bestätigen, dass ich meine Typen korrekt geschrieben habe, und alle Probleme zu erfassen, wenn sich die API ändert.

Was ich bisher getan habe:

Ich habe ein Programm, das einige Typoskript-Code generiert, grundsätzlich Daten aus der api ziehen und dann zu sehen, wenn das Typoskript Compiler stimmt zu, dass er die Schnittstelle übereinstimmt.

Das Ergebnis am Ende sieht ungefähr so ​​aus:

import { User } from './user'; 

function verify<T>(data: T) {} 

verify<User>({ id: 123, name: 'Joe' }); 
verify<User>({ id: 123, name: 17 }); // <-- obviously, this should give an error 

diesen Code generieren ist alles, was ich jetzt die Compiler zu überprüfen, es zu geben bekommen müssen, aber getan. Ich habe eine Weile in der Typcompiler-API geforscht und bleibe stecken, weil alle Funktionen, die zu tun scheinen, was ich brauche, einen Dateinamen (dh einen Pfad auf der Festplatte) anstelle einer Codezeile nehmen. Ich verstehe, dass wegen der Verweise auf andere Dateien ein Pfad mit dem Code verbunden sein muss, aber ich kann keine Möglichkeit finden, das zu übergeben.

Ich möchte vermeiden, diese Dateien zu schreiben Scheibe weil

a) es scheint ein bisschen albern, da es bekommen wird es wahrscheinlich in den Quelldateien von der Festplatte dann
b) las gerade los werden ziemlich chaotisch, oder ich würde es in einem setzen muß separaten Ordner und dann auch alle Importanweisungen neu schreiben.

Der TL; DR meiner Frage:

Gibt es eine Möglichkeit, eine Reihe von Typoskript Code eingeben-Check?

+0

Ich glaube, dass Sie in den [TypeScript Language Service] (https://github.com/Microsoft/TypeScript/wiki/Using-the-Language-Service-API) einhaken müssen. –

+0

Speziell "Für Benutzer, die sich nicht für inkrementelles Parsing entscheiden möchten, verwenden Sie' ts.ScriptSnapshot.fromString() '" –

+0

@SeanVieira ok, aber was dann?Ich habe einen Schnappschuss ... und? – nickf

Antwort

1

Zwei Lösungen

Sie haben nicht nur die js auf die Festplatte zu schreiben ts

ich diese Dateien auf die Festplatte zu schreiben, um zu vermeiden, laufen möchte, weil

Sie können ts-node verwenden: https://github.com/TypeStrong/ts-node

Überprüfen Sie eine Zeichenfolge von js

Ein String von JS ist einfach zu überprüfen. Verwenden Sie einfach ts.transpile von der Compiler-API. Das sagte ... Sie wollen nicht nur eine Zeichenfolge von js überprüfen. Sie möchten eine Reihe von Dateien überprüfen. Daher empfehlen wir nur ts-node zu verwenden.