使用类型安全定义 typescript 泛型

Posted

技术标签:

【中文标题】使用类型安全定义 typescript 泛型【英文标题】:Defining typescript generics with type safety 【发布时间】:2013-07-15 13:37:06 【问题描述】:

您可以像使用 c# 一样定义具有安全类型的泛型吗?

例如

public bool Foo<T>() where T : struct  /* */ 

Typescript 现在有泛型,但我可以执行类似的操作吗?

谢谢。

【问题讨论】:

【参考方案1】:

好吧,看来你可以这样做:

Foo<T extends IBar>()  /* */ 

这似乎使所有调用都需要 T 实现 IBar

【讨论】:

+1 - 恰到好处。这取自泛型的 Java 实现 - extends 关键字用于限制接口或类。 但它似乎还没有强制执行任何操作。 注意,如果你想通过接口进行约束,你使用extends关键字而不是implements。例如Foo&lt;T extends IBar&gt; @Tarion, it seems to work for me 请注意,类型不需要“实现” IBar 接口,它必须与它兼容。【参考方案2】:

如果您不想创建额外的类/接口,例如,您可以执行以下操作:

Foo&lt;T extends id: string | number &gt;

【讨论】:

以上是关于使用类型安全定义 typescript 泛型的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 入门14.泛型

LayaBox---TypeScript---泛型

在 TypeScript 中定义不同泛型类型的数组

TypeScript泛型

TypeScript泛型

使用泛型制作 Array.flat(1) 的 Typescript 包装器