搜索词
updateMethodSignature, createMethodSignature
建议
应该可以向 createMethodSignature
和 updateMethodSignature
函数提供一个修饰符数组(或 undefined
)。
用例
在使用 TypeScript 编译器 API 时,TypeScript 提供了众多可用于生成抽象语法树(AST)的 create
和 update
函数,例如从自定义转换器中。然而,对于可能具有诸如 static
关键字等修饰符的 MethodSignature
,没有选项来创建或更新它们的修饰符。这破坏了 one of my libraries,它唯一的目的是简单地深度克隆一个 TypeScript 节点。一种解决方法是手动修补修饰符,但我希望这可以成为该函数的一部分(就像其他函数一样,如 createPropertySignature
和 updatePropertySignature
)。
示例
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 的其他部分保持一致。
1条答案
按热度按时间8oomwypt1#
作为#35282的一部分,我看到你已经将
modifiers
添加为新createMethodSignature
和updateMethodSignature
方法的第一个参数。由于这是TypeScript v4.0.0的一部分,请随意关闭此问题。