2017-05-22 4 views
0

Ich habe ein Projekt mit zahlreichen Objekten, die konstante String-Werte enthalten.Kann ich Standardkonstanten exportieren und Aliase aus demselben Modul eingeben?

const StringLiterals = { 
    a: "LetterA", 
    b: "LetterB", 
    c: "LetterC" 
}; 

export default StringLiterals; 

In vielen Fällen werden diese Zeichenfolgenkonstanten als Parameter verwendet. Ich will sicherstellen, dass nur Strings von diesen Konstanten verwendet werden, also definiere ich einen Typalias.

Jetzt muss ich diesen Typ Alias ​​überall neu definieren, ich möchte es verwenden. Ich würde die String-Werte und die Art alias im selben Modul definieren, so dass ich etwas tun kann:

import StringLiteral from "./StringLiteral"; 

function doSomething(str: StringLiteral) { 
    if (str === StringLiteral.a) { ... } 
} 

auch:

  • Ich will nicht zwei verschiedene Module, eine, die der Typ und der andere, der die Zeichenfolgenwerte enthält.
  • Ich möchte keine Enums, weil sie nicht Kennungen String-Werte zuordnen können; Sie müssen numerisch sein. Ich möchte auch eine Menge von Array-Referenzen vermeiden, um zwischen String- und numerischen Werten zu übersetzen.

Ist das überhaupt möglich?

Antwort

0
const StringLiterals = { 
    a: "LetterA" as "LetterA", 
    b: "LetterB" as "LetterB", 
    c: "LetterC" as "LetterC" 
}; 

type StringLiterals = (keyof StringLiterals)[keyof typeof StringLiterals]; 

export default StringLiterals; 
Verwandte Themen