TypeScript 快速修复将@typedef转换为类型或接口

hgqdbh6s  于 4个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(52)

搜索词

  • typedef quickfix
  • typedef jsdoc

建议

我有一个类似这样的旧闭包编译器风格的项目,有很多代码:

/**
* @typedef {{
*   px: number,
*   py: number,
*   isZooming: boolean,
*   isPanning: boolean,
*   is2DPan: boolean,
*   cancelNextDblclick: boolean,
*   initializeMouseDown: (e: !Event, dygraph:!DygraphAny, context: !DygraphInteractionContext) => void
* }} DygraphInteractionContext
*/

如果我用这种类型声明一个变量,我可以发现 TypeScript 可以理解 @typedef:

type DygraphInteractionContext = {
    px: number;
    py: number;
    isZooming: boolean;
    isPanning: boolean;
    is2DPan: boolean;
    cancelNextDblclick: boolean;
    initializeMouseDown: (e: Event, dygraph: any, context: ...) => void;
}

我想将其转换为 typeinterface。我可以引入一个虚拟变量,复制 TS 风格的 type 声明并粘贴到其中进行转换。
但如果有快速修复就更好了!

使用场景

迁移一个使用 JSDoc 基础类型的项目。有一个解决方法,但快速修复将是一个很大的改进。

示例

(见上文)

检查清单

我的建议满足以下准则:

  • 这不会在现有的 TypeScript/JavaScript 代码中造成破坏性更改
  • 这不会改变现有 JavaScript 代码的运行时行为
  • 这可以在不根据表达式的类型发出不同的 JS 的情况下实现
  • 这不是一个运行时特性(例如库功能、带有 JavaScript 输出的非 ECMAScript 语法等)
  • 这个特性会与 TypeScript's Design Goals 的其他部分保持一致。
rpppsulh

rpppsulh1#

从带有JSdocs的JS迁移到TS应该会更好。用实际的TS类型声明替换所有这些注解需要花费很多时间。

0wi1tuuw

0wi1tuuw2#

看起来,它被 #51430 覆盖了。

相关问题