如何在 Typescript 中更改类的方法返回类型

问题描述 投票:0回答:1

我有一组接口的链表,带有 .prev 和 .next 属性。它的“值是在继承的接口中键入的;

父类型“Branch”具有 BranchIF(接口)类型的 .next 和 .prev 属性。

有一个BranchObj类,它实现BranchObjIF; BranchObjIF 扩展了 BranchIF。 但是,在类 BranchObj 和接口 BranchObjIF 中,我希望 next 和 prev 属性的类型为 BranchObjIF - 而不是通用的 BranchIF。

这可能吗?我何时何地可以抑制此问题的打字稿错误?

typescript
1个回答
0
投票

如果您不共享一些代码,则很难确定这是否是您正在寻找的东西。但是,根据您提供的信息,我的理解是您正在寻找的内容需要一些通用类型

<T>
。它会类似于以下内容:

interface BranchIF<T> {
    next: T | null;
    prev: T | null;
}

class Branch implements BranchIF<Branch> {
  constructor(
    public next: BranchIF<Branch> | null,
    public prev: BranchIF<Branch> | null
  ) {}
}

interface BranchObjIF extends BranchIF<BranchObjIF> {

}

class BranchObj implements BranchObjIF {
  constructor(
    public next: BranchIF<BranchObj> | null,
    public prev: BranchIF<BranchObj> | null
  ) {}
}

const branch = new Branch(null, null);
type x = typeof branch.next; // BranchIF<Branch> | null


const branchObj = new BranchObj(null, null);
type y = typeof branchObj.next; // BranchIF<BranchObj> | null
© www.soinside.com 2019 - 2024. All rights reserved.