簡體   English   中英

動態地將屬性名稱添加到typescript接口

[英]dynamically adding a property name to a typescript interface

我有一個常數:

const name = 'some/property';

我想定義一個接口,它使用name作為屬性的鍵,類似於在對象聲明中使用它,如下所示:

{[name]: 'Bob'}

我嘗試了以下內容,但似乎這是在做其他事情:

interface MyInterface {
  [name]: string;
}

是動態定義typescript支持的屬性名稱?

您必須指定名稱的類型。 在對象聲明中無法使用它,但您可以使用[]設置和訪問屬性值。

interface MyInterface {
  [name: string]: string;
}
const n = 'qweq';

let x: MyInterface = {
  'a': 'b'
}

x[n] = 'a';

並以這種方式訪問​​它。

x[n]

這里的操場上看看吧。

這可以使用TypeScript 2.1中引入的映射類型來完成:

const name = 'some/property';
type MyInterface = {
    [prop in typeof name]: string;
};

這會強制MyInterface類型的所有對象都具有名為'some/property'


我想這個答案對你來說太遲了,但希望它可以幫助別人。 我在我自己的搜索中發現了這個問題,以找到類似問題的解決方案。

暫無
暫無

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

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