我目前正在学习TypeScript,但是对于如何为非全局接口实现扩展方法感到非常困惑。考虑以下示例:假设我有一个interface
定义了Cart
,如下所示:
interface Cart {
id(): string,
name(): string,
quantity(): number
/* Other methods */
}
然后,我想添加一个类似于以下内容的扩展方法:
Cart.prototype.isValid = function() {
return this.quantity() > 0;
}
这显然是行不通的,因为Cart
不是一种类型,但是我很困惑,因为Promise
也被定义为interface
,但是我可以成功地向其中添加扩展方法。例如:
declare global {
interface Promise<T> {
hello(): string
}
}
Promise.prototype.hello = function() {
return "Hello!";
}
export {};
是否可以扩展Cart
之类的非全局接口,如果可以,我该怎么做?
答案 0 :(得分:0)
在您的情况下,购物车只是一种类型。没有对象,您不能扩展类型/接口引用的原型。没有要扩展的原型,您可以使用一些实现Cart的对象来实现。
就Promise而言,它是一个浏览器API,如果您在浏览器上进入控制台并键入Promise,则会看到那里有一个对象。当像示例一样扩展promise原型时,您没有扩展接口,而是提供了此对象。
如果需要的话,一种可能的解决方案是接口组成,例如:
default