2017-05-22 19 views
0

私は一定の文字列値を含む多数のオブジェクトを持つプロジェクトを持っています。エクスポートモジュールのデフォルトをエクスポートし、同じモジュールからエイリアスを入力できますか?

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

export default StringLiterals; 

多くの場合、これらの文字列定数はパラメータとして使用されます。これらの定数からの文字列だけが使用されていることを確認したいので、タイプエイリアスを定義します。

type StringLiteral = keyof typeof StringLiterals; 

今、このタイプのエイリアスをどこでも再定義する必要があります。含む

  • 私は2つの異なるモジュールを望んでいない、1:また

    import StringLiteral from "./StringLiteral"; 
    
    function doSomething(str: StringLiteral) { 
        if (str === StringLiteral.a) { ... } 
    } 
    

    :私はこのような何かを行うことができるように、同じモジュール内の文字列値と型の別名を定義したいです型と文字列値を含む他の文字列です。

  • 私は、識別子を文字列値にマッピングさせることができないため、enumを必要としません。数値でなければなりません。私はまた、文字列と数値の間で変換するために、多くの配列参照を避けたい。

これはすべて可能ですか?

答えて

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; 
関連する問題