问题标签 [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 投票
1 回答
36 浏览

typescript - 当不是 StringEnum 的所有元素都作为键存在时,接口 [StringEnum 中的键]?

考虑以下表示商店的示例数据,其中包含待处理和已完成的采购订单 ID 列表:

如果一家商店既没有待处理订单也没有完成订单,则它根本不会出现在列表中。

我尝试使用以下内容来表示这一点:

不出所料,tsc抱怨当我没有这两个 PENDINGFULFILLED作为商店的子属性时。

我通过将该属性设为可选 ( [status in Status]?: number[]) 来消除错误,但我认为这不是我真正想要做的,因为商店永远不会有零子属性

另一个异想天开的,在黑暗中射击的尝试[status in Partial<Status>]: number[];类似地抱怨。

这是我唯一的选择,而且根本不用担心吗?

这是一个平凡的 MCVE;真正的要复杂得多,并且有更多的层次。这就是(总是?)使用泛型而不是重复每个可能的键名的动机:枚举被用作其他对象中的字段值。

讨论类似情况的 TypeScript/问题参考:7374 | 19211 | 14934 | 5683 .

0 投票
1 回答
45 浏览

typescript - Typescript - 如何使用泛型定义中的完整类型?

这是我天真的尝试将泛型类型从参数对象类型MyObject<P>转换为回调函数。

myObject正如预期的那样,的类型是MyObject<{ value: number, otherValue: number }>,所以我期望泛型类型会传播到doSomethingP将是{ value: number, otherValue: number },然后props也将是那种类型。

但是,错误清楚地表明props是 类型PropTypes,这是 P 可能的最小类型。

有没有办法告诉 Typescript 编译器将完整的P定义传递给回调,而不是像这样显式地强制类型?

0 投票
1 回答
608 浏览

typescript - 生成偏函数的类型

我有一个声明类型的函数。我计划使用此功能的部分版本。但我需要先为部分版本声明变量。

我可以复制签名,省略第一个参数。
虽然它可以工作并进行类型检查,但我想自动执行此操作。

这就是我想使用它的方式:

而且我不知道是否可以创建PartialFunc<Func>通用。

我试过这种方法

或与泛型类型相同:

但这仍然需要我指定所有类型:

否则我有any类型。

虽然这会强制执行类型检查,例如它不会接受PF<typeof myFunc, number, number, string>,但我想避免再次编写类型。

基本上我想说 TS拿这个函数的签名,去掉第一个参数

有什么解决办法吗?

此任务的上下文 - 我有一个react-redux应用程序,我想将参数从存储绑定到操作调度程序。

0 投票
1 回答
4772 浏览

javascript - Axios 通用 Post 在 TypeScript 中返回错误类型

我正在尝试使用 Axios API 返回一个类型化的对象。我正在使用泛型类型来声明我正在返回一个实例,GetSliceResponse但不幸的是 Axios 似乎仍然返回一个 any 类型的对象。

我的代码看起来像这样

Http 响应正是您所期望的:

如上面的代码所示,我可以使用语法正确地创建我的类型的实例,new但 Axios 数据属性似乎不受类型声明的影响。

0 投票
1 回答
188 浏览

typescript - 打字稿通用类型错误

我有一个实用程序函数,它对注入存储以响应组件进行类型级别检查。

使用最新的打字稿版本 2.9.2 我收到错误“类型'A'不满足约束'对象'。类型'D'不可分配给类型'对象'。”

您能否帮助了解此错误以及如何解决此错误。

谢谢

0 投票
1 回答
3102 浏览

typescript - 具有通用类型的打字稿装饰器

不适用于以下代码:

通用有什么问题吗?显示助理values: any

我想Test.set从装饰器中使用泛型的方法

0 投票
1 回答
99 浏览

typescript - 打字稿泛型类型转换错误

我有一个实用功能,可以帮助在反应组件中输入检查注入的商店

我收到一个错误“类型'Pick'不满足约束'keyof ExpectedProps'。类型'Pick'不可分配给类型'StoreKeyToInject'。”

你能解释一下它的作用以及如何解决它吗?

0 投票
0 回答
541 浏览

reactjs - 基于 prop 在 React 组件中创建泛型类

我正在使用Reactand immutable.js,并且我需要Record在组件内使用基于 - 的类型,该类型将其中一个字段值作为keyof某个对象。

这是基本类型定义:

在另一个地方,我指的是这种类型以获得派生的:

最后,我创建了 React 元素本身:

它会引发编译错误:

我不太明白出了什么问题,但它确实如此,无论是使用类型推断Element还是使用显式泛型。也许我走错路了?


更新:我们使用的是immutable.js v4.0.0-rc.9而不是稳定版本,包括类型。

0 投票
1 回答
297 浏览

typescript - 联合类型和条件类型的问题

我有以下类型声明:

ReplaceType<T>应该解决MyGeneric<T> | T或者T取决于T它是否是一个函数:

不幸的是,这不适用于boolean和联合类型:

游乐场链接

0 投票
1 回答
61 浏览

typescript - 具有函数表达式而不是函数声明的泛型类型

这个函数声明编译并且似乎是正确的:

但是这个函数表达式不能编译:

如果可能的话,我正在寻找与函数表达式相同的正确语法。

我这样称呼 flattenDeep :

我不确定我所拥有的是否足以传达flattenDeep应该返回类型 X。