问题
我写了一个js文件: fabric.ext.js, 并且在 html直接包含它:
<head>
<script src="fabric.min.js"></script>
<script src="fabric.ext.js"></script>
</head>
我又为它写了一个ts声明文件 (rightHand.d.ts):
// eslint-disable-next-line @typescript-eslint/no-namespace
declare namespace rightHand {
interface Point {
x: number;
y: number;
}
function loadObjects(ar: any[]): any[]; // fabric.Object[]
function makeLine(points: number[], options: object): any; // fabric.Line2
function makePolyline(points: Point[], options: object): any; // fabric.Polyline2
function makePolygon(points: Point[], options: object): any; // fabric.Polygon2
function makeText(text: string, options: object): any; // fabric.Text2
}
在某个.vue 文件, 在脚本部分
我只能把rightHand.d.ts的内容复制进去, 这样才可以成功编译.但是这样意味着太多重复代码。
搞了一天,尝试修改tsconfig.json, package.json, 没有成功。希望有大牛指点迷津。
解决方案
把rightHand.d.ts文件放在src或者src/types目录下就可以,也可以命名为global.d.ts文件。放在src/typings目录下不可用。
注意声明文件中不要使用export,否则该文件就是一个模块(文件模块),而不是一个脚本(全局模块)了。