[英]Get Typescript interface property type, given property name only
我有一個具有許多屬性的 Typescript 接口。 如果沒有此接口的任何實例,我需要確定給定屬性的類型。
export interface Data {
foo: string;
bar: number;
.
.
.
}
這可以在具有非變量字符串的Data
上使用索引簽名。
type propType = Data['foo']; // propType = 'string'
但是,它不適用於使用變量。
const propName = 'foo';
type propType = Data[propName]; // Errors
錯誤:
這些錯誤都沒有意義,因為propName
絕對是string
而不是any
,並且它不是“在這里被用作類型”。
更新
很明顯,我試圖做一些不可能的事情。 經過多次斗爭,我終於接受了未實例化的接口在運行時不會也永遠不會有屬性或屬性類型信息。
這種使用type
的方法將起作用,但僅在編譯時起作用。 我用正確的語法批准了答案。
(仍然認為我問題中的錯誤消息很奇怪。)
你有兩個解決方案。 任何一個
export interface Data {
foo: string;
bar: number;
}
type propName = 'bar';
type propType = Data[propName]; //number
或者
export interface Data {
foo: string;
bar: number;
}
const propName = 'bar'; //or let propName: 'bar' = 'bar' (both are type literals)
type propType = Data[typeof propName]; //number (typeof propName is 'bar')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.