Как передать класс как тип через index.d.ts и определение модуля? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть модуль 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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...