You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中表示Guid?C#类转TypeScript类场景

在TypeScript中如何表示C#的Guid类型?

先还原下问题场景:

我有一个C#的Product类:

public class Product {
    public Guid Id { get; set; }
    public string ProductName { get; set; }
    public Decimal Price { get; set; }
    public int Level { get; set; }
}

现在要写对应的TypeScript类,其他属性都没问题,但Id的类型不知道该怎么表示:

export class Product {
    id: ???;
    productName: string;
    price: number;
    level: number;
}

请问在TypeScript里怎么表示Guid类型?

嘿,这个问题我日常开发中经常碰到,给你几个实用的方案,按需选择就行:

方案1:直接用string(最省心的通用方案)

C#里的Guid本质就是一个特定格式的字符串(比如"550e8400-e29b-41d4-a716-446655440000"),所以在TypeScript里直接用string完全能满足需求,前后端交互的时候也不需要额外做类型转换。修改后的类长这样:

export class Product {
    id: string;
    productName: string;
    price: number;
    level: number;
}

如果想让代码语义更清晰,还可以自定义一个类型别名,让别人一眼就知道这是Guid:

type Guid = string;

export class Product {
    id: Guid;
    productName: string;
    price: number;
    level: number;
}

方案2:借助uuid库的类型(需要格式校验时用)

如果你的项目需要严格保证Guid的格式合法性,或者要生成合规的Guid,可以用第三方库uuid,它自带了类型定义。先安装依赖:

npm install uuid @types/uuid

然后直接用它的Uuid类型就行:

import { Uuid } from 'uuid';

export class Product {
    id: Uuid;
    productName: string;
    price: number;
    level: number;
}

这个类型本质还是string,但搭配库的生成方法(比如uuid.v4()),能确保你拿到的是合法的Guid,类型层面也更明确。

方案3:自定义严格的模板字面量类型(进阶玩法)

如果想在编译阶段就约束Guid的格式,可以用TypeScript的模板字面量类型来定义一个更严格的Guid类型:

type Guid = `${string}-${string}-${string}-${string}-${string}`;

export class Product {
    id: Guid;
    productName: string;
    price: number;
    level: number;
}

这个类型会强制id必须符合xxxx-xxxx-xxxx-xxxx-xxxx的格式,不过这只是编译时的校验,运行时如果需要精确验证,还是得写额外的逻辑。要是想更精准地匹配UUIDv4的规则,可以写更复杂的类型:

type UUIDv4 = `${string}-${string}-4${string}-${'8' | '9' | 'a' | 'b'}${string}-${string}`;

export class Product {
    id: UUIDv4;
    productName: string;
    price: number;
    level: number;
}

不过这种方式比较繁琐,一般中小项目用前两种方案就足够啦。

内容的提问来源于stack exchange,提问作者Richard77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:31:57