2017-08-26 6 views
1

と同様に、我々はこれを持っていますか?

答えて

2

countriesの値は現在のところstringとして検出されているので、もう少し処理する必要がありますが、$Valuesを使用することもできます。あなたが特定の値のみが許可されている流れを教えている場合、それは動作します:

type FullNames = "United States" | "Italy"; 

const countries: {[key: string]: FullNames} = { 
    US: "United States", 
    IT: "Italy" 
}; 


const nope: $Values(typeof countries) = 'nope'; // 'nope' is not in the value type 

は、私はそれが明示的にタイプを追加する必要があるため、これは、あなたが望むものではないかなりだと思いますが、それはなんとかです。

+3

ああ、ありがとう、私は 'type FullNames'列挙型を定義する必要があるようですが、とにかくそれを使用するかもしれませんか? – Blagoh

+0

ええ、オブジェクトリテラルの値から列挙型を推論しないようです。どちらのソートが理にかなっているのは、オブジェクトのリテラルを持つ型のほとんどが初期値に制限したくないからです。 – Adam

+2

ご協力いただきありがとうございます。私はこれを受け入れました。なぜなら、少なくともそれは動作し、そのオブジェクト内の値でなければならないというメッセージを伝え、そのオブジェクトの値が与えられたものであることを保証するからです:) – Blagoh

関連する問題