如何通过index.d.ts和模块定义将类作为类型传输?

时间:2018-06-25 18:44:20

标签: javascript typescript import export

我有一个打字稿+ 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
  }
}

0 个答案:

没有答案