我在用webpack构建的打字稿中有角度应用程序。 我还有具有下一个结构的npm软件包(在Sinopia中托管,不是npm)
my-custom-npm-package
- index.ts
- studentStorage.ts
- student.d.ts
student.d.ts
interface IStudent
{
name: string;
id: number;
}
index.ts
import { StudentStorage } from './studentStorage';
export { StudentStorage }
studentStorage.ts
export class StudentStorage{
private students: IStudent[] = [];
public get(): IStudent[]{
return this.students.slice(0);
}
}
在我的角度组件中,我有这个字符串
import { StudentStorage } from 'my-custom-npm-package';
接下来,我会在webpack中遇到此错误
ERROR in D:\Sandbox\MultiLanguage\node_modules\my-custom-npm-package\studentStorage.ts
(2,23): error TS2304: Cannot find name 'IStudent'.
我有解决方法: 在我写的地方创建
/// <reference path="node_modules/my-custom-npm-package/student.d.ts" />
但是我想在没有此修复程序的情况下使用我的自定义npm软件包。 我要安装而不引用.d.ts文件。
我该如何实现?
答案 0 :(得分:0)
一种解决方案可能是将/// <reference path="student.d.ts" />
添加到studentStorage.ts
。但是在您的库的其余部分位于模块中时,将IStudent
设置为全局是很奇怪的。我建议将student.d.ts
更改为以下模块:
export interface IStudent
{
name: string;
id: number;
}
和studentStorage.ts
到:
import { IStudent } from "./student";
export class StudentStorage{
private students: IStudent[] = [];
public get(): IStudent[]{
return this.students.slice(0);
}
}
然后,您的库中要使用IStudent
的客户端只需导入它即可。