🔍 搜索词
- customization type display
- Array or T[]
✅ 可实现性检查清单
- 这不会对现有的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
⭐ 建议
在TypeScript中,当悬停在一个变量上时,推断出的类型会以特定的格式显示。
例如,数字数组显示为number[]。
然而,一些开发者,包括我自己,更喜欢可读性和与其他通用类型的一致性的其他格式 Array<number>
。
📃 激励示例
我注意到抽象语法树(AST)中有一个 WriteArrayAsGenericType
标志,可以将 T[]
转换为 Array<T>
。
我想请求在tsconfig.json中添加一个配置选项以启用此标志,允许开发人员选择他们喜欢的数组类型悬停工具提示的格式。
例如:
{
"compilerOptions": {
"typeDisplayFormat": "generic" // Options could be "generic" for Array<number> or "shorthand" for number[]
}
}
💻 用例
复杂类型可读性:我经常编写可以导致复杂类型的函数式代码,如 Task<Maybe<Task<Maybe<T[]>>[]>>[]
。简写 []
符号可能会使理解嵌套的泛型关系变得困难。将这些类型显示为 Array<T>
将显著提高可读性和理解力。
一致性:大多数其他泛型类型使用尖括号(例如,Promise<T>
,Map<K, V>
),只有数组类型使用特殊的简写(number[]
)。将数组类型与此约定对齐将确保所有类型的一致性并提高清晰度。
4条答案
按热度按时间ct2axkht1#
See also #59029
dluptydi2#
我找到了一个临时的解决方法,帮助我解决了这个问题。
我修改了这个文件:
C:\Users\<your_username>\AppData\Local\Programs\Microsoft VS Code\resources\app\extensions\node_modules\typescript\lib\typescript.js
,并搜索了WriteArrayAsGenericType
。这里是我找到的部分:我将条件
context.flags & 2
更改为true
。重启VSCode后,它对我有效。我相信这将在VSCode更新后停止工作,所以这只是个临时解决方案。
v8wbuo2f3#
@lsby,我们能合作找到一个永久的解决方案吗?
3df52oht4#
我相信永久解决方案是TypeScript团队添加我们需要的配置选项,但到目前为止还没有回应。也许我们可以考虑使用一个VSCode插件来解决这个问题。你有什么其他想法吗?