如何在基于 TypeScript 的库中添加对类名自动完成的支持?

nul*_*der 7 javascript typescript

我编写了一个简单但有用的库,名为 CliSpinner。https://github.com/AxeriDev/CliSpinner

问题是,VScode 有打字稿类自动完成功能,但它永远找不到我的。我像这样导出 CliSpinner.ts 内部的类:

class CliSpinner { ... }

const cliSpinner = new CliSpinner();
export default cliSpinner;
Run Code Online (Sandbox Code Playgroud)

当我开始输入 CliSpi 或 cliSpi 时,我从来没有得到要导入的数学结果。其他库和包如何实现这一目标。Chalk 是一个 js 库,但它仍然有这个。当我开始输入 chal 时,粉笔就会出现,我可以单击将其导入。

小智 0

问题是您正在导出 CliSpinner 的实例,而不是类本身。当您键入 CliSpi 或 cliSpi 时,VS Code 会查找具有这些名称的导出类或函数,但它不会找到任何内容,因为您只是导出一个实例。

export default class CliSpinner { ... }
Run Code Online (Sandbox Code Playgroud)

如果你想导出类本身,你应该这样做:

import CliSpinner from 'cli-spinner-package';
const cliSpinner = new CliSpinner();
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其导入到另一个文件中,如下所示: 如果您想保留实例导出,但又想让该类可供导入,您可以执行以下操作:

class CliSpinner { ... }

const cliSpinner = new CliSpinner();
export { CliSpinner };
export default cliSpinner;
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样导入该类:

import { CliSpinner } from 'cli-spinner-package';
Run Code Online (Sandbox Code Playgroud)

例子是这样的:

import cliSpinner from 'cli-spinner-package';
Run Code Online (Sandbox Code Playgroud)