如何从其他Typescript声明文件中公开类
假设我正在用Javascript构建一个节点模块,它公开了3个类:如何从其他Typescript声明文件中公开类,typescript,typescript-typings,Typescript,Typescript Typings,假设我正在用Javascript构建一个节点模块,它公开了3个类: //index.js module.exports={ 甲级, B类, C类, } 我想编写一个Typescript声明文件,用于从其他声明文件中提取这些类,以便于组织。例如,类似这样的事情: //index.d.ts import { ClassA } from './classA.d.ts'; import { ClassB } from './classB.d.ts'; import { ClassC } from '
//index.js
module.exports={
甲级,
B类,
C类,
}
我想编写一个Typescript声明文件,用于从其他声明文件中提取这些类,以便于组织。例如,类似这样的事情:
//index.d.ts
import { ClassA } from './classA.d.ts';
import { ClassB } from './classB.d.ts';
import { ClassC } from './classC.d.ts';
declare module 'myModule' {
export ClassA;
export ClassB;
export ClassC;
}
我很难做到这一点,我尝试了各种排列;每当我在index.d.ts
中使用来自另一个本地文件的导入时,都会出现一些错误。在index.d.ts
中插入整个类定义集效果很好,但我希望将它们组织到单独的文件中
使用Typescript 3.8.3.我想我有一个小技巧,可以帮助您在声明文件中导入东西,我通常会这样做:
index.d.ts
声明模块'myModule'{
//它返回一个承诺,因此必须解决它
const moduleA=等待导入('./classA.d.ts');
导出类ClassA扩展moduleA.ClassA{}
//其他人也是如此
}
我想出来了
索引d.ts
/// <reference path="./classA.d.ts" />
declare module 'myModule' {
import { ClassA as MyClassA } from 'myModule/classA';
class ClassA extends MyClassA {}
}
declare module 'myModule/classA' {
export class ClassA {
foo:string;
bar:number;
}
}
谢谢@tmhao2005,这很有趣。你介意分享一下你的
classA.d.ts
文件是什么样子的吗?它只是一个像你一样的普通类。你成功了吗?恐怕没有。Typescript编译器似乎不关心类型定义文件中的wait import
。
declare module 'myModule/classA' {
export class ClassA {
foo:string;
bar:number;
}
}