🔍 搜索词
ECMAScript模块导入jsdoc
✅ 可实现性检查清单
- 这不会对现有的TypeScript/JavaScript代码造成破坏性的改变
- 这不会改变现有JavaScript代码的运行时行为
- 这可以在不根据表达式的类型发出不同的JS的情况下实现
- 这不是一个运行时特性(例如库功能、带有JavaScript输出的非ECMAScript语法、JS的新语法糖等)
- 这不是要求添加一个新的实用类型: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- 这个特性将与我们设计目标的其他部分一致: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
⭐ 建议
现在我可以使用以下方式在https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types中输入一个 require
调用
/**
* @type {typeof import("./accounts").userAccount}
*/
var x = require("./accounts").userAccount;
但是当我的代码使用一个 import 语句时,我找不到一种方法来在模块解析找到匹配项时对它进行类型标注。import { shortNameFromImport } from "textmodule";
在之前的行中无法使用,因为这一行中没有 let
或 const
。
/** @type {import('textmodule')} */
import { shortNameFromImport } from "textmodule";
而 normal way 用于带有括号的变量类型标注的方法也不能使用,因为它不是有效的JS代码:
import { /** @type {import('textmodule')} */ (shortNameFromImport ) } from "textmodule";
这两种无括号的变体都不起作用...
import { /** @type {import('textmodule')} */ shortNameFromImport } from "textmodule";
import { shortNameFromImport /** @type {import('textmodule')} */ } from "textmodule";
📃 激励示例
在使用TypeScript代码时,我可以在 tsconfig.json
中的 path
做一些魔法操作。但我希望有一个仅支持JSDoc的解决方案。
💻 用例
如上所述
3条答案
按热度按时间dw1jzc5e1#
你能提供一些关于实际模块路径为何无法正常工作的信息吗?或者为什么指定
paths
不是一个合理的解决方案?vc9ivgsu2#
在我的使用场景中,我沿着这条路使用 importmap ,所以 TypeScript 本身找不到 .ts/.d.ts/.js 文件是完全可以接受的。
实际上,我为我们库支持 importmap 生成创建了一个 ts 和 js 示例。
我没有
jsconfig.json
,但可能应该有。这个项目被打开是因为我在 TypeScript 类型与 jsdoc 功能之间的功能对等性方面遗漏了。
当我无法将 TS 指向一个 ts/js 文件时,创建一个
jsconfig.json
、添加paths
以及可能创建一个.d.ts
文件有点繁琐。jjjwad0x3#
我对这个功能有些怀疑,因为我们已经能够在TS中实现这个功能,而不需要在配置之外进行操作——但我会将这个问题留给反馈。