我想獲得這樣的強型別:
我想獲得這樣的強型別。
enum Schema {
content = 'content',
interaction = 'interaction',
}
型別 ContentData = {
content: string;
};
type Data = Record<Schema, unknown> & {
[Schema.content] 。ContentData。
}
type Event<T extends keyof typeof Schema> ={
event: string;
schema: T;
data: Data[T] // <----- error: 型別'T'不能用于索引型別'Data'.。
};
我現在的問題是,我想根據選擇的模式來輸入data,但是TS拋出了一個錯誤Type 'T' cannot be used to index type 'Data'.。
預期的行為將是:
Event<Schema.content> =={
event: string;
schema: Schema.content。
data: ContentData。
}
Event<Schema.interaction> =={
event: string;
schema: Schema.interaction。
data: unknown;
}
我怎樣才能實作這一點?
uj5u.com熱心網友回復:
你把列舉當成了一個物件,但它是一個合適的型別。所以如果你改用:
type Event<T extends Schema> = {
event: string;
schema: T;
data: Data[T]。
然后它應該就可以作業了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/318623.html
標籤:
