144得票4回答
为什么Typescript需要“infer”关键字?

为什么Typescript的开发者们创造了infer关键字? 根据文档,以下是使用它的示例: type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any; 我不明白为什么这是必要的。为什么不能...

73得票1回答
Typescript:同一对象内一个属性的类型取决于另一个属性的类型

我有一个TypeScript接口,其中包含两个属性(type:string和args:object)。根据type的不同,args可能具有不同的属性。我需要应用什么类型定义到args才能让编译器/自动完成知道哪些属性允许在args中使用? 这与我在Redux中使用的Actions有些相似,它...

50得票4回答
如何在TypeScript中键名已知或未知的情况下输入一个对象

我正在寻找一种方法来为下面的对象创建TypeScript类型,该对象有两个已知键和一个具有已知类型的未知键:interface ComboObject { known: boolean field: number [U: string]: string } const combo...

43得票2回答
基于条件类型的可选参数

在TypeScript中,是否可以根据条件类型使函数具有强制或可选参数? 这是我目前的进展: const foo = <T extends string | number>( first: T, second: T extends string ? boolea...

42得票3回答
TypeScript条件类型:从React组件中提取组件属性类型

使用TypeScript 2.8的新条件泛型类型功能,能否提取React.ComponentType<TProps>组件的TProps?我想要一个类型, 可以同时适用于ComponentType和TProps本身,所以您可以作为开发人员传递其中的任何一个: 例如:interfac...

40得票1回答
基于类中变量值的条件类型(TypeScript)

我正在创建一个通用类,名为Loadable<T>,它有两个字段。一个叫做state,包含可加载资源的当前状态。第二个叫做data,包含可加载资源的值。 state被定义为"loading" | "loaded" | "error",我希望data的类型根据state的当前值而改变...

34得票2回答
TypeScript条件类型 - 过滤只读属性/挑选必需属性

使用TypeScript中的新条件类型(或其他技术),是否有一种方法可以根据其修饰符仅选择接口中的某些属性?例如,具有...interface I1 { readonly n: number s: string } 我想基于之前的类型创建一个新的类型,其外观如下:interfa...

16得票1回答
为什么在Typescript中,当T被实例化为布尔型时,基于`T extends undefined`的类型条件会将T解析为`never`?

以下代码尝试定义一个函数类型,当其泛型参数为undefined时,该函数不接受参数调用,但对于任何其他的参数类型,则传入1个参数。 (可能有更好的方法来实现这一点,我很想看到在评论中提供的链接,但是问题是关于为什么Typescript与我预期的不同)。 当T extends undefine...

15得票2回答
有没有一种好的方法来实现带有默认失败情况的条件类型?

对于实现条件类型,我非常喜欢使用std::conditional_t,因为它使代码简洁且易读。 template<std::size_t N> using bit_type = std::conditional_t<N == std::size_t{ 8 }, s...

13得票3回答
TypeScript: 条件类型和使用布尔参数控制返回类型

如何使用条件类型而不是重载签名来重写此内容? function foo(returnString: true): string; function foo(returnString: false): number; function foo(returnString: boolean) { ...