[英]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.