使用 TypeSharp 编译 C# 模型为 TypeScript 类型声明

目前 Web 项目多使用前后端分离的开发模式,通过 Ajax 调用 API 返回数据。

这样获取的数据缺少类型,会给后期开发带来维护问题,例如 API 后端变动会导致前端应用无法正常使用,而且是运行时错误,很难检查。

推荐的做法是使用 TypeScript 建立类型检查以减少运行时错误,保证多数情况下,只要编译成功,应用就应该是正确运行的。而付出的代价是在项目建立初期就必须建立各个 API 数据类型定义,会有额外的工作量;后期维护时也需要根据后端接口定义维护这些数据定义。可谓有得有失。

介于这个问题,我希望能够直接从后端直接导出 TypeScript 类型定义,以在前端编译时进行提供类型检查。未来如果接口有变动,把类型定义文件放入前端即进行类型检查。

所以,我们需要一个工具来编译 C# 模型为 TypeScript 声明,我创建了 TypeSharp 库(https://github.com/zmjack/TypeSharp)。


TypeSharp

TypeSharp 非常易于使用且提供了 CliTool.NET Core 项目进行 TypeScript 类型声明。

您可以通过 NuGet 来安装并使用它:

dotnet add package TypeSharp --version 0.6.0

通过简单的两个步骤,即可生成 TypeScript 类型声明:

  1. 实例化 TypeScriptModelBuilder
  2. 使用 CacheType 方法缓存类型;
  3. 使用 Compile 方法生成 TypeScript 代码。

假设有类型:

public class Cls
{
    public int Value { get; set; }
}

那么,为 Cls 类生成 TypeScript 声明这样编写:

var builder = new TypeScriptModelBuilder();
builder.CacheType<Cls>();
var tscode = builderCompile();

运行后,tscode 为:

declare namespace App {
    interface Cls {
        value? : number;
    }
}

TypeSharp Cli

TypeSharp Cli 工具可以为项目生成 TypeScript 定义。

使用命令从 NuGet 安装全局工具:

dotnet tool install dotnet-ts -g

在项目中安装 TypeSharp 库,使用 TypeScriptModel 标记要导出 TypeScript 声明的类。

TypeSharp Cli : tsg 命令会为 TypeScriptModel 标记类导出声明:

[TypeScriptModel(Namespace = "Ns")]
public class Cls
{
    public int Value { get; set; }
}

先编译项目,然后在项目目录下使用命令来生成:

dotnet ts tsg

默认情况下,生成文件会在 Typings 目录下,可以使用 -o 参数自定义生成目录:

dotnet ts tsg -o tsout

生成文件内容如下:

/* Generated by TypeSharp v0.6.0.0 */

declare namespace Ns {
    interface Cls {
        value? : number;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值