簡體   English   中英

TypeScript object 中的建議密鑰

[英]TypeScript Suggested keys in object

我想定義一個 TypeScript 類型,這會在編輯器中建議(首選) object 鍵,但我不想限制用戶定義任意鍵。

所以我定義了以下類型:

type SuggestedProperties = 'click' | 'change' | 'blur' | string;

這些是首選屬性: 'click' | 'change' | 'blur' 'click' | 'change' | 'blur' 'click' | 'change' | 'blur' (但我確實想允許任意string 。)

type SuggestedKeysType = Partial<{ [key in SuggestedProperties]: any }>;

現在我想讓編輯告訴我這些: 'click' | 'change' | 'blur' 'click' | 'change' | 'blur' 首先是'click' | 'change' | 'blur'

是否可以? 我的例子正確嗎? Visual Studio 代碼/ stackblitz

在此處輸入圖像描述

我不知道是否存在更好的解決方案,但這種方式有效:

type MyObj = Partial<
  {
    [key in SuggestedProperties]: any;
  } & {
    [index: string]: any;
  }
>;

自動完成將首先建議 SuggestedProperties,您可以傳遞任何其他屬性

如果你添加| string | stringSuggestedProperties ,然后整個類型將急切地減少為string 所有的string文字類型都將被吸收到聯合中,然后編譯器和您的 IDE 將完全忘記它們:

type Oops = 'a' | 'b' | string;
// type Oops = string

相反,您應該使SuggestedKeysType成為具有已知鍵和字符串索引簽名的類型,可能如下所示:

type SuggestedProperties = 'click' | 'change' | 'blur';

type SuggestedKeysType = { [K in SuggestedProperties]?: any } & { [k: string]: any }

然后你會得到你期望的建議:

const myObject: SuggestedKeysType = {
  foo: 1,
  bar: 2,
  click: 3,
  // Suggestions here:
  // ☐ blur, (property) blur?: any
  // ☐ change, (property) change?: any
}

游樂場代碼鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM