假设我有一个C#班

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

等效的打字脚本如下所示:

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

如何在typescript中表示Guid?

推荐答案

在Javascript中,GUID通常表示为字符串,因此表示GUID的最简单方法是字符串.通常,当序列化为JSON时,它被表示为一个字符串,因此使用字符串将确保与来自服务器的数据兼容.

要使GUID不同于简单字符串,可以使用品牌类型:

type GUID = string & { isGuid: true};
function guid(guid: string) : GUID {
    return  guid as GUID; // maybe add validation that the parameter is an actual guid ?
}
export interface Product {
    id: GUID;
    productName: string;
    price: number;
    level: number;
}

declare let p: Product;
p.id = "" // error
p.id = guid("guid data"); // ok
p.id.split('-') // we have access to string methods

article本书更多地讨论了品牌类型.此外,typescript编译器使用paths的品牌类型,这与本用例类似.

Typescript相关问答推荐

Tailwind CSS样式不在Svelte应用程序中呈现

如何从具有给定键列表的对象类型的联合中构造类型

了解TS类型参数列表中的分配

如何将类型从变量参数转换为返回中的不同形状?

使用泛型keyof索引类型以在if-condition内类型推断

React重定向参数

TypeScrip:逐个 case Select 退出noUncheck kedIndexedAccess

为什么不能使用$EVENT接收字符串数组?

Fp-ts使用任务的最佳方法包装选项

TypeScrip泛型类未提供预期的类型错误

刷新页面时,TypeScrip Redux丢失状态

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

作为函数参数的联合类型的键

错误TS7030:并非所有代码路径都返回值.";由tsfig.json中的";Strong";:False引起

基于泛型的类型脚本修改类型

如何正确键入泛型相对记录值类型?

无法使用prisma中的事务更新记录

Typescript 从泛型推断类型

TS 排除带点符号的键

在Typescript 中,是否有一种方法来定义一个类型,其中该类型是字符串子集的所有可能组合?