У меня есть модуль typcript + javascript, и он компилируется как пакет, который может быть импортирован другим проектом.Я думаю, что было бы лучше объяснить это с помощью некоторого кода, а затем объяснить мой вопрос.
Вкратце, как я могу использовать свой класс как тип в другом проекте, когда он конвертируется в пакет?
Класс, который необходимо использовать как тип:
my-class.ts
export default class MyClass{
...
}
index.ts
import MyClass from './my-class';
export {
MyClass,
};
index.d.ts
declare module '@package/my-project'{
export interface MyClass{
//Am I supposed to declares types here?
}
}
otherProjectApp.vue
import {MyClass} from '@package/my-project';
private myClassInstance: any; //I want this to be :MyClass instead of "any"
beforeCreate(){
this.myClassInstance = new MyClass();
}
так что, как вы можете видеть из фрагментов упрощенного кода, я хочу использовать MyClass в качестве типа для моей инициализации в otherProjectApp.vue.Это файл VUE, но он не очень важен для этой ситуации, я считаю.
Я просматривал следующие ссылки, но не мог понять, как это реализовать.https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html
https://github.com/benjamn/ast-types/issues/106
https://medium.com/@tomsoir/typescript-how-to-rewrite-type-definition-file-file-d-ts-of-any-node-modules-package-1eed7f5630d1
Чтобы дать некоторый контекст, вот мой файл tsconfig.json:
{
"extends": "./extradetails.json",
"compilerOptions": {
"allowJs": true,
"declaration": false,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"strictNullChecks": false
}
}