TypeScript - spezifische Zeichenfolgentypen

Ich suche nach einer besseren Möglichkeit, zwischen verschiedenen Arten von Zeichenfolgen in meinem Programm zu unterscheiden, z. B. zwischen absoluten und relativen Pfaden. Ich möchte, dass Funktionen einen bestimmten Typ mit einem Compilerfehler annehmen oder zurückgeben, wenn ich es vermassle.

Beispielsweise

function makeAbsolute(path: RelativePath): AbsolutePath {
}

where AbsolutePath und RelativePath und wirklich nur Strings. Ich habe mit Typ-Aliasen experimentiert, aber diese erzeugen eigentlich keinen neuen Typ. Auch Schnittstellen -

interface AbsolutePath extends String { }
interface RelativePath extends String { }

aber da diese Schnittstellen kompatibel sind, hindert mich der Compiler nicht daran, sie zu verwechseln. Ich verstehe nicht, wie ich das tun kann, ohne der Schnittstelle eine Eigenschaft hinzuzufügen, um sie nicht kompatibel zu machen (und diese Eigenschaft entweder tatsächlich der Zeichenfolge hinzuzufügen oder sie zu umgehen) oder eine Wrapper-Klasse zu verwenden. Irgendwelche anderen Ideen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage