Typescript中的对象索引键类型

罗伯特·科里特尼克(Robert Koritnik):

我将通用类型定义为

interface IDictionary<TValue> {
    [key: string|number]: TValue;
}

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

interface IDictionary<TKey, TValue> {
    [key: TKey]: TValue;
}

interface IDictionary<TKey extends string|number, TValue> {
    [key: TKey]: TValue;
}

type IndexKey = string | number;

interface IDictionary<TValue> {
    [key: IndexKey]: TValue;
}

interface IDictionary<TKey extends IndexKey, TValue> {
    [key: TKey]: TValue;
}

以上都不是。

那怎么办

昵称:

您可以通过使用IDictionary<TValue> { [key: string]: TValue }数字来实现此目的,因为数值会自动转换为字符串。

这是用法示例:

interface IDictionary<TValue> {
    [id: string]: TValue;
}

class Test {
    private dictionary: IDictionary<string>;

    constructor() {
       this.dictionary = {}
       this.dictionary[9] = "numeric-index";
       this.dictionary["10"] = "string-index"

       console.log(this.dictionary["9"], this.dictionary[10]);
    }
}
// result => "numeric-index string-index"

如您所见,字符串索引和数字索引可以互换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自Typescript中对象的键和值的类型

TypeScript:从类型/减法类型中删除键

强制Typescript对象的索引成员的类型?

Typescript文字类型用作索引器的键

Typescript,声明变量类型必须是对象的键

如何从Typescript中的固定对象的键创建映射类型

索引类型的TypeScript键太宽

Typescript中嵌套对象的索引类型

Typescript对象索引器和与索引器类型不匹配的键

TypeScript通过其值类型缩小可索引类型的键

在TypeScript中按值类型排除对象键

定义类型以将键入对象的键对象数组转换为打字稿中的索引对象

如何从类型化对象的键中获取索引类型?

如何键入将数组转换为由Typescript中数组元素中的键索引的对象的函数?

TypeScript-强制对象中特定键的类型

如何从TypeScript中的类型化对象中动态删除键

TypeScript中具有通用每个键的映射对象类型

TypeScript中是否可以直接从对象的键创建新类型?

对象中的“键”是否可以作为 Typescript 中的类型保护?

如何仅收集类型中的键,该类型的对象具有某些特定键作为 Typescript 接口中的值?

我可以在 MongoDB 中索引对象类型子文档的键吗?

在 Typescript 中,使用字符串类型的键调用对象中的方法

在 Typescript 中删除对象键并返回条件类型

字符串枚举作为 TypeScript 中的对象索引类型

TypeScript - 基于类型对象在函数 sig 中映射键类型与值类型

对象中的 TypeScript 建议键

从 Typescript 中对象数组的属性中提取键/值对象类型

类型“键”不能用于索引 TypeScript 中的类型“对象”

TypeScript 中的动态对象键