[英]How to refer to own property of an interface in Typescript?
我试图在界面中引用自己的属性。
让我们考虑这个例子:
type PizzaType = "pepperoni" | "margherita" | "cheese";
interface Pizza {
bakeTime: number;
size: number;
}
interface PizzaService {
availablePizzaTypes: Record<PizzaType, Pizza>;
calculatePrice: (type: PizzaType) => number;
}
看看PizzaService.calculatePrice
。 我们知道类型必须是PizzaType
。 这很好用。
但是让我们想象一下,我们不知道PizzaType
,我们只想参考availablePizzaTypes
。 是这样的:
interface AnonymousPizzaService {
availablePizzaTypes: Record<string, Pizza>;
calculatePrice: (type: << How to refer to `availablePizzaTypes`? >>) => number;
}
我想使用类似type: (keyof availablePizzaTypes)
的东西,但这不起作用。
那么我如何在 Typescript 中做类似的事情呢?
编辑这是一个更简单的例子:
interface Pizza {
name: string;
// When `name` is e.g "pepperoni", names can only be "['pepperoni']".
names: this["name"][];
}
您将需要AnonymousPizzaService
的类型参数来捕获支持的实际比萨饼类型:
type PizzaType = "pepperoni" | "margherita" | "cheese";
interface AnonymousPizzaService<T extends PizzaType> {
availablePizzaTypes: Record<T, Pizza>;
calculatePrice: (type: T) => number;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.