が、私はこの非常に単純なコードを持っています。どうして?活字強制ではないタイプの
答えて
viewsDictionary
タイプ{ [key: string]: Object }
を明示的に指定しています。互換性のある値を代入してもその型は変わらないので、とkeyof
のどの文字列でもtypeof viewsDictionary
が残っています。
あなたは
viewsDictionary = { category: {} };
を割り当てることによってだけでなく正常に動作されていることを確認することができます。
TSは、型自体を推測し、期待どおりに動作しますので、ジャスト、明示的な型宣言を削除します。
let viewsDictionary = {
abc: {}
};
type ViewName = keyof typeof viewsDictionary;
let result: ViewName;
result = "category"; error
は今「『ABC』を」というタイプ「『カテゴリーは』」型に代入できません不平を言います。
更新:
ます。また、(コメントから)明示的に型を指定することができます
let viewsDictionary: {abc: {}} = {
abc: {},
def: {}, // error
};
type ViewName = keyof typeof viewsDictionary;
let result: ViewName;
result = "def"; // still error
[タイプ'{ abc: {}; def: {}; }'
が'{ abc: {}; }'
を型に代入ないことをviewsDictionaryに別のキーを追加したときにこれは文句を言うでしょう
私は多くのことを考えました。このための専門用語は型の拡大です。しかし、あなたが言うようにすれば、問題はviewsDictionary自体がどのような型の値も持つことができるということです。私は、viewsDictionaryの値がすべて特定の型であることを保証し、そのキーの型を作成したいと思います。 – prmph
答えを更新しました... –
- 1. 徹底的なマップは、私は活字体の網羅を強制したい
- 2. 主な活動の強制終了
- 3. 活字タイプ
- 4. 活字体はクラスとタイプ
- 5. 宣言タイプは活字体
- 6. Typescript、google.maps.d.ts、タイプ強制
- 7. 入力タイプ=テキストで絵文字キーボードを強制するには?
- 8. 活字体は、一般的な制約
- 9. 活字エラー:プロパティ「ユーザーは」タイプ「のリクエスト」
- 10. 活字エラー:タイプが「{}」「番号」
- 11. 活字体:タイプ「対象読者は、」
- 12. ラベルのデフォルトのタイプが強制アンラップオプションなのはなぜですか?
- 13. 強制的な値の強制伝播
- 14. 評価エラー:タイプのベクトルにタイプ「閉鎖」を強制することはできません「の文字
- 15. 活字タイプのマッピングは、これらの活字体の種類を考えると、一般的な機能
- 16. 活字体:型の引数は、「RegExpMatchArray」タイプ「文字列」
- 17. 活字体ではないオペレータ
- 18. 活字体 - アクセス「隠された」タイプ
- 19. 抑制活字体の警告
- 20. 活字体の制御フロー解析
- 21. 活字体で活字体
- 22. 活字体で活字体
- 23. 無活動のx分後にユーザーのログインを強制する
- 24. タイプ '{}'はタイプ '{title:string;テキスト:文字列。 }「私は活字体コード以下のエラーの下に取得しています
- 25. 活字体のインターフェイスに観察可能なタイプを追加
- 26. 強いタイプのルートテスト
- 27. 活字体の規約活字体で
- 28. 文字列型パラメータが強制されていない
- 29. 私は活字体1.8で、次のタイプをインポートしています
- 30. 活字体が - そのタイプのコールまたは構築署名
'Object'を大文字の' O'で指定してもよろしいですか? –