问题标签 [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 回答
134 浏览

javascript - T 型锯齿数组的类型定义及其数组原型扩展

我正在尝试为我附加到的 JavaScript 函数编写一个 Typescript 定义文件Array.prototype

数组.js

flat()适用于Array<T|S>where SisArray<T|S>和 return Array<T>。也就是说,它有一个递归定义,并且所有数组都符合该定义,因为[1, 2, 3].flat()它将简单地返回原始数组的副本。

我是 TypeScript 的新手,但我的理解是,为了获得 TypeScript 定义文件(即 IntelliSense)的好处,方法定义必须在interface Array<T>. 如果是这种情况,有没有办法对T特殊版本的Array<T>?

如果不是,我如何定义一个接口,该接口将为每个数组拾取并识别数组何时适合递归定义?

0 投票
1 回答
402 浏览

typescript - 避免在开关内进行打字稿转换

考虑以下代码:

现在,我想避免在 doSomthingBasedOnType 中看到的强制转换(作为 FooBarAction<"FOO"> 的操作),因为如果接口使其成为此开关内的唯一可能性,则作为定义。我可以在我的代码中更改某些内容以使其正常工作,还是这只是 TypeScript 中的错误?

0 投票
3 回答
6947 浏览

typescript - 打字稿通用承诺返回类型

基本上我正在尝试实现一个函数,该函数始终返回我作为参数传递给函数的相同“类型”的已实现承诺

因此,如果我用布尔值调用它会返回一个已完成的 Promise,如果我用一个字符串参数调用它会返回一个已完成的 Promise,依此类推..

到目前为止我尝试了什么:

我不知道这是否是正确的方法,无论如何,如果我尝试获得 Promise< void > 它会中断

任何建议将不胜感激

0 投票
0 回答
138 浏览

typescript - Generics for Typesafe-Actions library

So I am using this library https://github.com/piotrwitek/typesafe-actions. It has a method createAction with the following API.

Now if i do

It simply fails. It infers type as payloadType<someType> instead of payloadType<T extends someType>. Am I the only one having this issue. As a workaround i did implement a getter function but seems like a hack. Any help on the same would be highly appreciated.

0 投票
1 回答
406 浏览

typescript - 如何要求参数是严格扩展部分的泛型

我试图达到说明一些通用 P 是 O 的一部分的直观结果。

但是,这允许键不是 O 的 P

这也不起作用

这个版本有效

但是返回类型不能是泛型 P。

是否存在将 P 限制为 O 中的键并满足通用要求的解决方案?

- 更新

对于任何感兴趣的人,我已经发布了一些有用的部分类型的要点,这些部分类型不允许多余的属性

https://gist.github.com/babakness/a1ca775f81097ffae04098a8cfdadc60

0 投票
1 回答
4388 浏览

javascript - 在 TypeScript 中返回泛型类型的构造函数

我正在努力定义如何编写 TypeScipt 代码,该代码表示​​该函数返回泛型类型的构造函数。有很多关于如何传递泛型类型的构造函数的例子,但没有关于如何返回的例子。

请检查以下示例:

这是抽象类的一部分:

在派生类中,我试图像这样实现它:

我有以下错误:

如果我知道如何在抽象类中指定,我可以跳过派生类中的实现。

所以问题是 - 如何在抽象类级别指定该方法返回泛型类型的构造函数,并且我可以在子级别类中跳过此方法的实现?或者我在抽象类级别上没有正确指定返回签名?

编辑:

请检查奇怪的问题。A 类和 B 类的区别仅在于显式构造函数的存在。在 RealA 中不起作用,RealB 使用相同的 getModel() 方法。

对于 RealA 类同样的错误

0 投票
1 回答
28 浏览

typescript - 带有通用参数列表的打字稿类型参数

是否可以像在 C++ 中一样将类型参数用作泛型?

有趣的部分是T<T2>因为打字稿编译器生成一个错误说: Type 'T' is not a generic

0 投票
1 回答
76 浏览

typescript - 递归泛型类型来扩展类型 - 奇怪的行为,这是一个错误吗?

给定一个接口

和一堂课

我希望能够这样做:

我试图通过声明以下类型来实现:

然后DeepContextual用于转换我的Test界面:

这工作正常。

现在,让我们向我们的ContextualData类添加另一个方法:

即使不使用新函数,我们的 Contextual 接口value: ContextualData<boolean>(true)现在也会抛出以下 TS 错误:

我错过了什么?这是一个错误吗?

0 投票
0 回答
185 浏览

reactjs - 在 TypeScript 中将 onChange 值设为没有类型断言的泛型类型

我已经创建了一个带有选项元素的通用反应组件,如下所示: import * as React from "react";

我正在使用这样的:

有什么方法可以避免在 changeHandler. event.currentTarget.value as OptionValues. 我还看到整个 createSelect 突然变得非常冗长,到处都引用了 OptionValues,但我想没有办法解决它。解决问题的替代方法也受到欢迎。那就是确保价值是预先确定的类型。

0 投票
1 回答
69 浏览

typescript - 在定义中,仅当泛型类型是数组时,我才需要特定的方法签名

这是 Knockout's 定义的稍微简化的版本subscribable

问题是arrayChange事件回调的定义是错误的。首先,该arrayChange事件应该只适用于T一个数组,比如X[]. 然后,ArrayChange接口使用的值需要是Xtype 而不是X[]

仅当是数组并且能够提取基础类型时,我如何才能包含arrayChange事件签名?T