我有一个自己打造的图书馆。我已经将其编译并捆绑为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
软件包必须具有此”的假设。
谢谢。