我有一些類都有一個名為data的屬性。我有一個資料型別映射的型別定義,我想在泛型定義中使用它。所以這是我的代碼:
type DataTypes = {
age: number;
firstName: string;
lastName: string;
};
abstract class AbstractBase<T extends DataTypes> {
data: T;
}
class AgeComponent extends AbstractBase<DataTypes.age> {}
class FirstNameComponent extends AbstractBase<DataTypes.firstName> {}
class LastNameComponent extends AbstractBase<DataTypes.lastName> {}
因此,在使用時,abstract class AbstractBase<T extends DataTypes>我想告訴 TypeScript 根據型別DataTypes中的映射接受型別。
TypeScript 可以做到這一點嗎?
uj5u.com熱心網友回復:
您可以傳遞給您要使用AbstractBase的鍵,并使用索引訪問型別從以下位置獲取型別:DataTypesDataTypes
abstract class AbstractBase<T extends keyof DataTypes> {
data!: DataTypes[T];
}
class AgeComponent extends AbstractBase<"age"> {}
游樂場鏈接
或者你可以直接傳遞屬性的型別:
abstract class AbstractBase<T extends DataTypes[keyof DataTypes]> {
data!: T;
}
class AgeComponent extends AbstractBase<DataTypes["age"]> {}
游樂場鏈接
uj5u.com熱心網友回復:
你必須使用那些Index access type在.Typescript 中不起作用
type DataTypes = {
age: number;
firstName: string;
lastName: string;
};
abstract class AbstractBase<T extends DataTypes[keyof DataTypes]> {
data !: T;
}
class AgeComponent extends AbstractBase<DataTypes["age"]> {
}
class FirstNameComponent extends AbstractBase<DataTypes["firstName"]> {}
class LastNameComponent extends AbstractBase<DataTypes["lastName"]> {}
// Test the inference
new AgeComponent().data // number
new FirstNameComponent().data // string
new LastNameComponent().data // string
打字稿游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471278.html
上一篇:使用映射型別生成元組型別
下一篇:如何指定無限生成器的型別?
