问题标签 [typescript-generics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
116439 浏览

typescript - Typescript中的对象索引键类型

我将我的泛型类型定义为

但是 TSLint 在抱怨。我应该如何定义一个可以作为键的对象索引类型?我也试过这些,但没有运气。

以上都不起作用。

那怎么办?

0 投票
1 回答
479 浏览

typescript - TypeScript 通用子类型

是否可以将命名空间作为通用类型传递,然后再从命名空间传递访问类型?我想实现这样的目标:

0 投票
1 回答
478 浏览

generics - 我可以使用打字稿将对象键限制为枚举值吗?

本质上,我想要一种方法来确保选项参数具有作为特定枚举值的键:

如果我使用接口/类而不是枚举,它可以完美地工作,但这确实是一个枚举(概念上)......

看到这个游乐场

0 投票
0 回答
125 浏览

angularjs - 带有 Angular2 注入器的 TypeScript 泛型

我正在尝试使用注入器在角度中使用依赖注入。我希望我能够在运行时根据发送的组件来实例化类型。

我似乎找不到传递类型的方法。我采取了多种方法,包括:

TypeScript 中的泛型似乎与 .NET 中的不同。

0 投票
0 回答
156 浏览

angular - angular2中承诺的编译时类型安全

使用 ng cli 创建的新项目。当使用 "ng serve" 编译/服务时,编译过程不会捕获 Promise 的通用参数上的类型错误。而是为我自己的泛型类型抛出错误(如预期的那样)。

对于上面的代码,我得到了这个:

这是预期的,但它没有捕捉到 promise 函数的错误。令人怀疑的是,Sublime(带有 ts 插件)按预期显示错误。

我的 tsconfig.json

是否可以为承诺保留编译时类型安全性,或者我错过了什么?

0 投票
1 回答
4834 浏览

generics - 打字稿:实现通用接口

考虑以下通用接口:

从概念上讲,每个Extractor实现都负责从某个数据源中提取特定类型的对象。的消费者Extractor可以使用 提取候选对象,extractCandidate()或者在给定任何候选对象的情况下,对其执行一些进一步的处理,以获得对象的更精细版本process()

现在,假设我Extractor为一个类实现了一个MyClass,如下所示:

现在假设我实例化MyExtractor并使用它:

问题 1:为什么这不会产生编译时错误?根据Extractor接口的定义,我希望编译器不会允许我调用myExtractor.process()除了 的实例之外的任何东西MyClass,或者至少使用结构兼容的东西。

问题 2:如何强制执行所需的行为?我只需要断言的candidate参数MyExtractor.process()是类型MyClass吗?

我怀疑这与 TypeScript 的结构类型系统有关,但是在阅读了一些 相关 问题FAQ之后,我仍然不确定它是如何具体应用在这里的。

我的打字稿版本是 2.1.4。

0 投票
1 回答
276 浏览

typescript - Typescript 子泛型类型推断

这超出了 TypeScript 的能力范围,还是我做错了什么?这是一些我想要工作的代码:

ISquare当我在函数调用的末尾放一个点时,智能感知应该显示成员returnSecondOption,但它没有,它似乎将 T1 和 T2 视为{}.

0 投票
3 回答
6068 浏览

typescript - 在 Typescript 中按字符串返回不同的类型

鉴于我们有以下两种不同的类型,我们如何根据字符串参数更改函数的返回而不提供泛型类型?

这里没有定义返回!

0 投票
1 回答
122 浏览

typescript - 生成器的 TypeScript 错误

在 VSCode 中尝试此 TypeScript 时出现错误:

有没有大神可以赐教...

0 投票
1 回答
36 浏览

typescript - 如何在 Typescript 中进行适当的通用协调?

情况如下:

b函数可选择接受值工厂,否则将默认生成。这是我拥有的更复杂代码的简化示例。

我知道 IValue != T (T作为 的子项出现IValue),但是我应该如何进行协调,以期望不仅与 IValue 的子项一起工作,而且包括确切的 IValue 类型本身?