TypeScript 将createMethodSignature和updateMethodSignature扩展并添加'modifiers'参数

0sgqnhkj  于 6个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(64)

搜索词

updateMethodSignature, createMethodSignature

建议

应该可以向 createMethodSignatureupdateMethodSignature 函数提供一个修饰符数组(或 undefined )。

用例

在使用 TypeScript 编译器 API 时,TypeScript 提供了众多可用于生成抽象语法树(AST)的 createupdate 函数,例如从自定义转换器中。然而,对于可能具有诸如 static 关键字等修饰符的 MethodSignature,没有选项来创建或更新它们的修饰符。这破坏了 one of my libraries,它唯一的目的是简单地深度克隆一个 TypeScript 节点。一种解决方法是手动修补修饰符,但我希望这可以成为该函数的一部分(就像其他函数一样,如 createPropertySignatureupdatePropertySignature )。

示例

import {createMethodSignature, createNodeArray, createModifier, SyntaxKind} from "typescript";

createMethodSignature(
    createNodeArray([
        createModifier(SyntaxKind.StaticKeyword)
    ]),
    node.typeParameters,
    node.parameters,
    node.type,
    node.name,
    node.questionToken
);

然而,上述示例将是一个破坏性更改,因为第一个参数期望一个类型参数的 NodeArray,因此替代方案是将其作为最后一个参数接受。

检查清单

我的建议满足以下准则:

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

8oomwypt1#

作为#35282的一部分,我看到你已经将modifiers添加为新createMethodSignatureupdateMethodSignature方法的第一个参数。由于这是TypeScript v4.0.0的一部分,请随意关闭此问题。

相关问题