TypeScript 中「类型定义的命名空间」使用

261 天前
 wdssmq

@types/dplayer - npm

https://www.npmjs.com/package/@types/dplayer?activeTab=code

// d.ts
export as namespace DPlayer;

export default class DPlayer {

}

// 导入姿势 1
import DPlayer from 'dplayer'

// 导入姿势 2
import DPlayerX from 'dplayer'
// import type DPlayer from 'dplayer'

姿势 1 好像是可以使用的,但是感觉有些不好区分(图 1 、2 );

图 3 是能找到命名空间,但是仍然提示未定义,就感觉和理解不太一样,虽然可以使用 /* global DPlayer */ 屏蔽提示;

所以目前探索出来的结论:

感觉就是 ts 和 eslint 没能配合好,,,可以使用下边方式之一来应对:

  1. 使用与「命名空间」同名的 import 导入,理解之后好像也还行;
  2. 为「命名空间」指定 /* global XXX */ 以屏蔽 eslint 提示;
  3. 不使用「命名空间」,直接使用 import 导入其下的具体类型;

↑ 图 1

↑ 图 2

↑ 图 3

「笔记」各种碎片信息「 2023-10-07 」_电脑网络_沉冰浮水

https://www.wdssmq.com/post/20230223818.html

711 次点击
所在节点    TypeScript
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/979738

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX