typeScript中如何把一个ts文件中定义的类型导入到d.ts文件中?

我要为window对象上添加一个属性:videoInstance,将它的类型设置为index.ts中导出的Video,按照网上的方法通过import()的方式导入,也尝试了
/// <reference path='./index.ts'/>
但是并没有效果。正确应该怎么写呢?

index.d.ts

declare type MapType = '3D' | 'GIS' | 'VIG';

// type Video = import('./../components/Video/index').Video

interface Window {
  videoInstance: ;
}

declare var videoInstance: Window['videoInstance'];

index.ts

class Video {

  public show(props: Props) {
    // TODO
  }

  public close() {
    // TODO
  };
};
export default Video
阅读 3.5k
2 个回答

.d.ts中如果通过import xxx from '...'导入一个模块,会导致.d.ts变成一个普通的js、ts模块,应该通过import(‘xxx.ts’)的方式导入,

例如问题中的index.ts中默认导出了Video类,想要在.d.ts中导入Video作为一个类型应该写为:
type Video = import('index.ts').default

typescript中没有这样的逻辑。你可以在*.d.ts中定义一个接口:

// *.d.ts
interface IVideo {
  show();
}
// 声明全局变量
declare var videoInstance: IVideo;

// *.ts
class Video implements IVideo {}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题