如何将声明文件用于自定义Javascript库打字稿和angular 5+

时间:2018-07-19 13:18:45

标签: angular typescript typescript-typings

我有一个自己打造的图书馆。我已经将其编译并捆绑为UMD(通用模块定义)模块。在我看来,我还创建了该库以用于Typescript项目。

为此,我知道我需要创建一些声明文件来定义Javascript模块中的类型。我已经使用this模板定义了声明,并将其另存为index.d.ts在我的JavaScript代码所在的同一文件夹内。在我的模块中,我只有一堆类,所以我的index.d.ts文件如下:

export as namespace MyModuleName;

export class Position {
  x: number;
  y: number;

  public clone(): Position;

  constructor(x: number, y: number);
}

export class Size {
  width: number;
  height: number;
}

export interface Drawable {
  draw(context: Context, cursor: Position): void;
}

在同一文件夹中,我还有一个JavaScript文件,该文件将MyModuleName定义为UMD模块。

我想要的是从另一个打字稿文件中导入这些类,并让编辑器知道这些类型定义,因此它可以帮助我哪个类具有哪些属性和方法。我将此index.d.ts包含到我的tsconfig.json的棱角项目中。我不知道的是,我不知道应该从哪个文件导入。是从javascript文件还是从index.d.ts文件本身开始?

我都尝试过。当我直接包含javascript文件时,编辑器不会给予我支持:

import * as MyModuleName from 'path/to/mymodulename/main.js'

例如,当我尝试创建类型为Position的对象时,当我开始键入内容时,编辑器不会列出MyModuleName中的组件。

当我导入该文件时,编辑器这次很高兴,但是打字稿编译器抱怨:

Module not found: Error: Can't resolve 'path/to/mymodulename' in 'somewhere/in/project'

在这种情况下通常的工作流程是什么?在5或5+角项目中包含自定义UMD Javascript模块和自定义.d.ts文件。大多数示例基于“ @types软件包必须具有此”的假设。

谢谢。

0 个答案:

没有答案