gpt4 book ai didi

c# - 对应 C# 语法的 Typescript

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:14 28 4
gpt4 key购买 nike

我在 typescript 中输入以下内容

export type Excludable<T extends FilterValue> = T & { isExcluded?: boolean }

其中过滤值:

export type FilterValue = {
id: number,
label: string,
}

类型 T 可以是以下内容:

export type AreaFilterValue = FilterValue & {
type: "Area",
taxonomy?: LocationTaxonomy,
}

我能以某种方式用 C# 编写上面的代码吗?

理想情况下我需要这样的东西:

 public class Excludable<T> : T where T : FilterValue
{
bool? IsExcluded { get; set; }

}

但它显示错误“Could not derive from T cause it's a type parameter”

我想要实现的是拥有一个像这样的对象:

  1. { id, label }
  2. { id, label, isExcluded }
  3. { id, label, isExcluded, type, taxonomy}

编辑:我目前在 C# 中设置 FilterValue 具有 isExcluded 属性

理想情况下,我想在我的代码中使用它,如下所示:

public Excludable<AreaFilterValue>[] OpenAreas { get; set; }

最佳答案

  & { isExcluded?: boolean }

Bassicaly 是一个匿名的扩展接口(interface)吗:

public interface FilterValueExt : FilterValue {
bool? IsExcluded { get; set; }
}

您不能在 C# 中创建通用子类,因此每次使用 Excludable 您都必须创建一个新接口(interface)或使用 Excludable 作为接口(interface)并在任何类上实现使用这种方法:

public interface Excludable
bool? IsExcluded { get; set; }
}

pulic class AreaFilterValue : FilterValue, Excludable {
// implementation here + type: "Area", taxonomy?: LocationTaxonomy,
}

我建议你在 typescript 中做同样的事情:

interface Excludable{
isExcluded?: boolean
}

var t= {isExcluded: true||false||undefined}; // typescript knows this is/canbe a excludable

关于c# - 对应 C# 语法的 Typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572309/

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