74得票3回答
在TypeScript中,如何获取值为给定类型的对象类型的键?

我将尝试创建一个类型,该类型由类型 T 的键组成,其值为字符串。 用伪代码表示为: keyof T where T[P] is a string。 我能想到的唯一方法是分两步进行: // a mapped type that filters out properties that aren...

48得票2回答
索引签名和空对象的记录之间有什么区别?

我无法弄清索引签名和记录类型之间的区别。有人能够解释一下它们的不同以及何时使用其中一个而不是另一个吗? 具体来说,我想定义一个对象的类型,它将具有随机字符串作为其键和值,并且这些键和值将被迭代。 以下两者之间有区别吗:let objectVariable: Record<string, ...

42得票5回答
如何实现 TypeScript 深度部分映射类型而不破坏数组属性。

你有什么想法可以将TypeScript的Partial映射类型递归应用于接口,同时不破坏任何带有数组返回类型的键吗? 以下方法并不足够: interface User { emailAddress: string; verification: { verified:...

37得票2回答
如何通过 TypeScript 中的映射类型删除属性

这里是代码。 class A { x = 0; y = 0; visible = false; render() { } } type RemoveProperties<T> = { readonly [P in keyof T...

37得票5回答
如何使用映射类型去除索引签名

给定一个接口(来自无法更改的现有 .d.ts 文件): interface Foo { [key: string]: any; bar(): void; } 有没有一种方法可以使用映射类型(或其他方法)来派生一个新类型,而不带有索引签名?即它只有方法bar(): void;。

26得票1回答
我该如何为一个映射类型添加索引签名?

假设我有一个接口。 interface X { a: string; b: number; c: boolean; } 还有一个函数 function values(x: X) { return Object.keys(x).map(s => x[s]) ...

24得票4回答
映射类型: 移除可选修饰符

考虑以下代码:interface Foo{ one?: string; two?: string; } type Foo2 = { [P in keyof Foo]: number; } 我本以为Foo2的类型是{ one: number; two: number; },然而它似...

17得票1回答
如何将元组类型转换为联合类型?

如何将元组泛型类型映射到联合类型? type NeededUnionType<T> = T[keyof T]; // Includes all the Array properties values const value: NeededUnionType<[7, s...

13得票1回答
在TypeScript中按值类型排除对象键

我想将一个对象类型映射到一个子类型,该子类型仅包含值为特定类型的键。例如,类似于 ExtractNumeric<T> 的东西,其中ExtractNumeric<{ str: string, num: number }> 应等同于类型:{ num: number }。我尝...

11得票1回答
使用动态键在Typescript中动态创建对象,而不需要将类型扩展为{[key: string]: T}。

没有扩展到{ [key: string]: V }的动态对象键? 我正在尝试创建一个TypeScript函数,以生成一个具有动态键的对象,其名称在函数签名中提供,而不会使返回类型扩展到{ [key: string]: V }。 所以我想调用: createObject('template...