【发布时间】:2017-02-16 19:48:53
【问题描述】:
在这个特定的示例中,我正在扩展 Array<T> 接口,如下所示:
interface BetterArray<T> extends Array<T> {
push(this: BetterArray<T>, value: T): this;
}
参考注释 - Array<T>.push 是这样实现的
interface Array<T> {
push(...items: T[]): number;
}
但我得到以下编译时错误:
接口“BetterArray”错误地扩展了接口“T[]”。
属性“推送”的类型不兼容。 类型 '(this: BetterArray, value: T) => this' 不可分配给类型 '(...items: T[]) => number'。 类型“this”不可分配给类型“number”。 类型“BetterArray”不可分配给类型“数字”。
有什么方法可以强制指示我想在我的界面上覆盖推送的 TypeScript(如 member hiding in C#)?
注意 - 我使用的是 TypeScript 2.0
进一步阅读 - 看来这完全取决于返回类型 - 基本上我想通过接口强制执行,一个新的返回类型......
interface A {
fn(): number;
}
interface B extends A {
fn(): this;
}
接口“B”错误地扩展了接口“A”。财产类型 'fn' 不兼容。 类型 '() => this' 不能分配给类型 '() => number'。 类型“this”不可分配给类型“number”。 类型“B”不能分配给类型“数字”。
【问题讨论】:
标签: typescript