sagen, dass ich die folgende Konstante Zeichenfolge haben:Bewegungsarten mit konstanter Strings und abhängige Typen
export default const FOO = 'FOO'
Sagen wir, ich importieren diese in einem Strömungs kommentierten Datei wie folgt:
import FOO from '../consts/Foo'
Ich habe dann eine Funktion:
const example = (foo : string) : {| type: FOO, foo: string |} => {
return {type: FOO, foo: foo}
}
Dies gilt nicht typecheck mit:
6: const example = (foo : string) : {| type: FOO, foo: string |}=> {
^^^^^^^^^^^^^^ string. Ineligible value used in/as type annotation (did you forget 'typeof'?)
6: const example = (foo : string) : {| type: FOO, foo: string |}=> {
^^^^^^^^^^^^^^ FOO
Also meine Fragen sind:
1) ist es möglich, Konstanten in Bewegungsarten zu verwenden, wie kann ich dieses Verhalten zu reproduzieren?
2) Ist es möglich, abhängige Typen im Fluss zu tun? also könnte ich zum Beispiel über Typen codieren, dass die zurückgegebene Zeichenfolge dieselbe Zeichenfolge sein muss, die an die Funktion example
übergeben wird?
EDIT: Klarstellung zu Teil 2: Ist es möglich, in irgendeiner Art und Weise anzuzeigen, dass die foo
Parameter übergaben in die example
Funktion in der Tat ist die gleiche Zeichenfolge als Zeichenfolge am foo
Schlüssel im Rück Objekt? Oder um zu behaupten, dass die Eingabe und die Ausgabe die gleiche Länge haben (zum Beispiel eine Verschiebechiffrefunktion). Oder sagen Sie eine Permutation der gleichen Charaktere enthalten? (für ein Mischen).
https://en.wikipedia.org/wiki/Dependent_type
Wenn Sie möchten, dass 'FOO' den Typ' 'FOO'' hat, müssen Sie es deklarieren, sonst ist es nur eine Zeichenkette. Für die Objekte würden Sie dann 'type: typeof FOO' eingeben, wie der Fehler sagt. Ich bin mir nicht ganz sicher, was Sie in Ihrem 2) Punkt fragen. Dann würden Sie mit einem Objekt mit zwei Eigenschaften mit dem gleichen Zeichenfolgenwert enden. – loganfsmyth