我有一個像這樣的常量
const KEYS: Record<string, string> = {
KEY1: 'k1_mightBeAnything',
KEY2: 'k2_hmm',
} as const;
然后我想創建一個型別
type ValidationErrors = Partial<Record<'k1_mightBeAnything' | 'k2_hmm', string | null>>;
所以我想自動化這部分'k1_mightBeAnything' | 'k2_hmm' 自動從名為 KEYS 的常量值推斷這些值
怎么做 ?
我做了功課,研究了很多并嘗試了
type ValidationErrors = Record<typeof KEYS[keyof typeof KEYS], string>)
但我認為它不起作用。編輯器不會從中提出任何建議,也不會阻止為不存在的鍵設定錯誤。所以短期內不能作業。下面一個例子
const errors = {'banana': 'whatever'};
應該被標記為錯誤,只需要允許這些鍵,'k1_mightBeAnything' | 'k2_hmm'但我嘗試過的上述型別沒有這樣做
謝謝
uj5u.com熱心網友回復:
您的示例在
const KEYS: Record<string, string> = {
KEY1: 'k1_mightBeAnything',
KEY2: 'k2_hmm',
} as const;
type ValidationErrors = Partial<Record<'k1_mightBeAnything' | 'k2_hmm', string | null>>;
const validObject: ValidationErrors = {'k1_mightBeAnything': 'whatever'};
const alsoValidObject: ValidationErrors = {'k2_hmm': 'whatever'};
const invalidObject: ValidationErrors = {'banana': 'whatever'};
點擊此處在 TS Playground 打開以上代碼
uj5u.com熱心網友回復:
您可以使用介面或列舉:
interface KEYS {
'k1_mightBeAnything': string;
'k2_hmm': string;
}
type ValidationErrors = Record<keyof KEYS, string | null>;
- 或者 -
enum KEYS {
'k1_mightBeAnything' = 'k1_mightBeAnything',
'k2_hmm' = 'k2_hmm',
}
type ValidationErrors = Record<keyof typeof KEYS, string | null>;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369887.html
標籤:打字稿
上一篇:在reactjs中生成隨機陣列
