Node API for .NET与TypeScript完美结合:自动生成类型定义的终极指南
【免费下载链接】node-api-dotnetAdvanced interoperability between .NET and JavaScript in the same process.项目地址: https://gitcode.com/gh_mirrors/no/node-api-dotnet
Node API for .NET是一个强大的工具,它实现了.NET与JavaScript在同一进程中的高级互操作性。本文将详细介绍如何利用Node API for .NET自动生成TypeScript类型定义,让你在开发过程中享受类型安全和智能提示的便利。
为什么需要自动生成类型定义? 🤔
类型定义能让JavaScript或TypeScript代码在使用.NET API时受益于编译时类型检查、编辑器建议和文档提示。许多.NET API在投射到JavaScript时会进行转换,以适应两者在类型系统、运行时库和常见约定上的差异。生成的类型定义是与JavaScript编组器行为相对应的编译时声明,后者是负责在两个运行时环境之间实际转换方法调用、参数、返回类型等的运行时组件。
使用MSBuild生成类型定义 🚀
最简单的生成类型定义的方法是利用提供的MSBuild目标。当引用Microsoft.JavaScript.NodeApi.GeneratorNuGet包时,Microsoft.JavaScript.NodeApi.Generator.targets文件会自动导入:
<ItemGroup> <PackageReference Include="Microsoft.JavaScript.NodeApi.Generator" Version="0.9.*-*" /> </ItemGroup>默认情况下,导入的目标只会为当前项目生成类型定义。但如果当前项目为空(不包含Compile项),则会为项目引用的所有程序集生成类型定义,包括NuGet包程序集和系统程序集。这种空项目的用法使我们能够利用MSBuild还原包并生成类型定义,以便从JavaScript动态调用这些包,而无需编写C#模块。
要自定义通过MSBuild生成类型定义的某些方面,请参阅MSBuild属性参考。
使用命令行工具生成类型定义 ⚙️
node-api-dotnet-generatornpm包是一个独立的命令行工具,它包装了Microsoft.JavaScript.NodeApi.Generator程序集,允许在MSBuild之外使用它。
| 参数 | 别名 | 描述 |
|---|---|---|
--assembly | -a | 生成类型定义的程序集文件的必需路径。 |
--framework | -f | 系统程序集依赖项的目标框架名字对象,例如net10.0。默认为调用工具时使用的.NET运行时版本(当前为.NET 10)。 |
--pack | -p | 解析系统程序集依赖项时要检查的应用程序目标包。默认为Microsoft.NETCore.App。可以多次指定。为ASP.NET应用添加Microsoft.AspNetCore.App目标包,或为Windows桌面应用添加Microsoft.WindowsDesktop.App。 |
--reference | -r | 主程序集引用的程序集路径。系统程序集通过目标包自动定位,无需单独指定。必须提供所有其他引用的程序集。可以多次指定。 |
--typedefs | -t | 生成的类型定义(.d.ts)文件的必需输出路径。 |
--module | -m | 生成JS模块加载器脚本与类型定义一起。可以多次指定。每个值是commonjs或esm,或者是具有指定模块类型的"type"属性的package.json文件的路径。 |
--nowarn | 不显示有关无法投射到JavaScript的API的警告。 | |
--help | -h-? | 显示命令行帮助。 |
| @<file> | 读取指定的响应文件以获取更多选项。通常在引用程序集路径的长列表可能超过最大命令行长时使用。 | |
请注意,每次调用仅为一个指定的主程序集生成类型定义,即使还提供了多个引用程序集。因此,为所有引用程序集(和系统程序集)生成类型定义可能需要多次调用。
结语
通过自动生成TypeScript类型定义,Node API for .NET为开发者提供了更流畅的.NET与JavaScript互操作体验。无论是使用MSBuild还是命令行工具,都能轻松获取准确的类型信息,提高开发效率并减少错误。开始使用Node API for .NET,体验类型安全的跨语言开发吧!
【免费下载链接】node-api-dotnetAdvanced interoperability between .NET and JavaScript in the same process.项目地址: https://gitcode.com/gh_mirrors/no/node-api-dotnet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考