gpt4 book ai didi

Typescript 编译器即服务 : how to test if one type is assignable to another?

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:04 24 4
gpt4 key购买 nike

我正在制作一个命令行 nodejs 工具,它使用 Typescript 语言服务自动重命名 Typescript 文件中的符号。

您告诉工具:将此类型的所有符号重命名为此符号。就像 resharper 一样,它也会重命名局部变量、属性等。由于它允许一次重命名多个符号,因此您还可以交换两个符号名称,而无需中间临时唯一名称(例如,将 Foo 重命名为 Bar,反之将 vesa 重命名)。

我必须公开语言服务中的私有(private)函数 getSymbolInfoAtPosition 才能使它正常工作,这样我才能获取 PullSymbol 信息

目前它仅通过在 PullSymbol 上调用 getNameAndTypeName 来检测精确的名称+类型匹配,但我想执行结构兼容的匹配。

在 C# 中,这很容易,因为 Type 有一个 IsAssignableFrom 方法。

有谁知道如何使用 Typescript 编译器即服务来检测一个 PullSymbol 是否在结构上与另一个 PullSymbol 兼容?

非常感谢,彼得·维维维伦

最佳答案

基本上,您似乎并没有全面检查一种类型是否可以单独通过反射分配给另一种类型。检查一种类型是否可分配给另一种类型的功能已经在 typescript 中实现,只是没有公开,并且没有真正的方法可以在不手动更改 typescript 库的情况下获得它。

一个直接的解决方法是有效地编译临时代码以将一个代码分配给另一个代码并查看是否存在编译错误。

my request to expose isTypeAssignableTo has been favorable的回应,所以希望答案会在短期内改变。

[更新] 看起来它最终在合并中暴露了...不过我还没有尝试过:https://github.com/microsoft/TypeScript/pull/33263/files#diff-c3ed224e4daa84352f7f1abcd23e8ccaR525-R527

关于Typescript 编译器即服务 : how to test if one type is assignable to another?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com