命名类型在我的 IDE 中产生的有用信息较少

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

我正在开发一个库,我希望借助 Typescript 直接在他们的 IDE 中为我的用户提供上下文帮助。

然而,当我命名我的类型而不是每次都完整地描述它们时,我似乎得到的有用信息较少。

这里是一个实施了两次的人为示例,一次是命名类型,另一次是到处都有完整的类型描述,以说明我的问题:

  1. 命名类型
export type ComplexNumber = {
  r: number,
  i: number
}

export default function addComplexNumbers (
  a: ComplexNumber,
  b: ComplexNumber
): ComplexNumber {
  return { r: a.r + b.r, i: a.i + b.i }
}

有了这个版本,如果我开始写

addComplexNumbers(
,我的IDE(VS Code)会给我函数参数和返回值的类型信息,如下所示:

addComplexNumbers(a: ComplexNumber, b: ComplexNumber): ComplexNumber

这是正确的,但无法帮助我为

a
b
提供正确的参数。相反,我只能猜测如何制作与
ComplexNumber
兼容的东西。我可以尝试
new ComplexNumber
或带有像
real
imaginary
这样的键的对象,但在这两种情况下我都是错的。

与以下版本比较:

到处都是完整的类型描述

export default function addComplexNumbers (
  a: { r: number, i: number },
  b: { r: number, i: number }
): { r: number, i: number } {
  return { r: a.r + b.r, i: a.i + b.i }
}

在这种情况下,一旦我开始输入,我就会得到更多帮助

addComplexNumbers(

addComplexNumbers(a: { r: number; i: number; }, b: { r: number; i: number; }): { r: number; i: number; }

如您所见,第二个版本提供的信息比第一个版本多得多。

但是,第二种方法也涉及到更多重复的代码,因此不太容易维护。

我的问题

有没有一种方法可以两全其美,避免重复代码,为我的类型保留单一的真实来源,并为用户提供更多有用的信息?

typescript intellisense
© www.soinside.com 2019 - 2024. All rights reserved.