打字稿智能感知

时间:2021-02-27 10:54:44

标签: typescript types module

首先:我在别人建立的项目中使用了 typescript,所以我对它有点熟悉,但还不够。现在由我来为自己进行设置,而我对模块和导入的工作方式感到困惑。 (这是一个使用 Snowpack 的 Svelte 项目)

假设我有 3 个文件:foo.tsbar.tsbaz.ts

baz.ts 中,我有一个简单的对象(它可以帮助我组织事物):

// baz.ts
export const Baz = {
  someProperty: 'value'
}

bar.ts 中,我导入这个对象并创建一个类:

// bar.ts
import { Baz } from 'baz';    

export default class BarService {
  public baz = Baz;

  constructor() {}

  public load = (baz.someProperty: any): Promise<any> => {
    // loading baz.someProperty
  }
}

然后我在 foo.ts 中导入“BarService”类:

// foo.ts
import { BarService } from 'bar';

const someFunction = () => {
  const barService = new BarService();

  barService.load(barService.baz.someProperty);
}

我还添加了 baz.d.tsbar.d.ts 文件,如下所示:

// baz.d.ts
declare module 'baz' {
  export const Baz: {
    someProperty: any,
  }
}
// bar.d.ts
declare module 'bar' {
  declare class BarService: {
    public baz: // Problem 1: how do I set the type?

    public load(someAttribute: any): Promise<any>;
  }
}

我的问题:

  1. 如何在“bar.d.ts”中设置“baz”变量的类型以获得智能感知?
  2. 'baz.ts' 文件将在开发过程中频繁更新,我不想同时更改 'baz.ts' 和 'baz .d.ts' 文件每次更新。有没有办法让“baz.d.ts”自动从“baz.ts”导出类型?

我查看了有关模块的 TypeScript 文档,但我的脑海中仍然不清楚。我什至不确定 *.d.ts 文件是否必要。

0 个答案:

没有答案