Typescript 如何在子类字段中引用超类字段的类型

Typescript 如何在子类字段中引用超类字段的类型,typescript,typescript2.0,Typescript,Typescript2.0,好的,我注意到Webstorm和VSCode只对顶级属性做了很好的intellisense,而不是继承的属性等。所以作为一个技巧,我想向继承属性的超类添加属性,但只引用超类中的类型 下面的屏幕截图显示两个顶级属性以粗体显示,继承属性以灰色显示: 我想欺骗IDE,用粗体显示一些继承的属性。明白了吗 我有以下接口,一个扩展另一个: export interface IHookOrTestCaseParam { slow: () => void, fatal: (err: any) =

好的,我注意到Webstorm和VSCode只对顶级属性做了很好的intellisense,而不是继承的属性等。所以作为一个技巧,我想向继承属性的超类添加属性,但只引用超类中的类型

下面的屏幕截图显示两个顶级属性以粗体显示,继承属性以灰色显示:

我想欺骗IDE,用粗体显示一些继承的属性。明白了吗

我有以下接口,一个扩展另一个:

export interface IHookOrTestCaseParam {
  slow: () => void,
  fatal: (err: any) => void,
  callbackMode: boolean,
  timeout: Function,
  done: Function,
  skip: () => void,
  set: (k: string, v: any) => void,
  get: (k?: string) => any,
  getValues: (...args: Array<string>) => Array<any>;
  getMap: (...args: Array<string>) => Object
  wrap: (fn: Function) => Function
  wrapFinal: (fn: Function) => Function;
  final: (fn: Function) => void;
  log: (...args: Array<string>) => void;
  wrapFinalErrorFirst: (fn: Function) => Function;
  wrapErrorFirst: (fn: Function) => Function;
  handleAssertions: (fn: Function) => void;
  assert: typeof chai.assert
  expect: typeof chai.expect
  should: typeof chai.should
}


export interface ITestCaseParam extends IHookOrTestCaseParam {
  // the t in t => {}
  (err?: Error): void
  skip:  IHookOrTestCaseParam.skip,  // <<<< here is a problem
  pass: Function,
  fail: Function,
  assert: typeof chai.assert,
}
对此

skip:  IHookOrTestCaseParam['skip'],
错误消息似乎消失了:


有人知道我想做什么,知道一个好方法吗?

是的,TypeScript接口可以通过名称引用另一个接口字段的类型:

interface A {
    name: string;
}

interface B {
    name: A['name'];
}

是的,TypeScript接口可以通过名称引用另一个接口字段的类型:

interface A {
    name: string;
}

interface B {
    name: A['name'];
}

正如错误试图告诉您的那样,这不是一种类型。你想做什么?属性是自动继承的;您不需要做任何事情,也不需要通过篡改代码来修复IDE中的故障。您可以使用更好的IDE,或者向IDE供应商提交问题。然而,我的猜测是IDE很好,但是代码中有一个问题。为什么不告诉我们Webstorm的实际问题呢?所以,一切都很好,但您不同意选择Webstorm来突出显示特定于子类型的属性。再说一遍,这真的不值得污染你的代码。事实上,这样做可能会让同意WebStorm设计选择的用户不高兴。别这样。或者,如果您真的关心这个问题,请再次向JetBrainsOMG提交一个问题,不要,请不要让您的代码使用继承来“修复”IDE缺陷,因为用户不会看到它。。。编码人员会看到这一点,他们会感到困惑。维护工作将变得繁重。将来把它拿走可能不是件容易的事。。。正如其他人已经解释的那样,这是一个非常糟糕的想法。正如错误试图告诉您的那样,这不是一种类型。你想做什么?属性是自动继承的;您不需要做任何事情,也不需要通过篡改代码来修复IDE中的故障。您可以使用更好的IDE,或者向IDE供应商提交问题。然而,我的猜测是IDE很好,但是代码中有一个问题。为什么不告诉我们Webstorm的实际问题呢?所以,一切都很好,但您不同意选择Webstorm来突出显示特定于子类型的属性。再说一遍,这真的不值得污染你的代码。事实上,这样做可能会让同意WebStorm设计选择的用户不高兴。别这样。或者,如果您真的关心这个问题,请再次向JetBrainsOMG提交一个问题,不要,请不要让您的代码使用继承来“修复”IDE缺陷,因为用户不会看到它。。。编码人员会看到这一点,他们会感到困惑。维护工作将变得繁重。将来把它拿走可能不是件容易的事。。。正如其他人已经解释过的那样,这是一个非常糟糕的主意。这回答了问题,无论这是否是一个好主意,所以我奖励你分数。这回答了一个值得投票的精彩问题。这回答了这个问题,无论这是否是一个好主意,所以我给你点奖励这回答了一个值得投票的精彩问题哈哈