类型“未定义”不能用作索引类型

Abhilash DK

我正在使用TypeScript教程关注WintellectNow React。在第五部分“排序和过滤”中,作者创建了一个具有可选属性的接口,如下所示:

interface IWidgetToolState {
   filterCol?: WidgetTableCols;
   filterValue?: string;
   sortCol?: WidgetTableCols;
}

有一个名为WidgetTableCols的枚举,如下所示:

enum WidgetTableCols {
    None, Name, Color, Size, Quantity, Price,
}

在一个函数中,作者获得如下枚举的值:

const fName: string = 
WidgetTableCols[this.state.sortCol].toLocaleLowerCase();

在这里,我无法将类型'undefined'用作索引类型。如果我删除?从接口它起作用,但是后来作者创建了另一个函数,该函数仅设置一个状态值,而打字稿说没有设置所有状态属性。

谁能让我知道如何解决这个问题。

提前致谢。

尼桑·托默尔

编译器只是告诉您this.state.sortCol可能没有值,因为您已strictNullChecks启用标志。

您可以首先检查它的存在:

const fName = this.state.sortCol != null ? 
WidgetTableCols[this.state.sortCol].toLocaleLowerCase() : null;

这将消除错误(但是您将需要处理fName可能为null的事实)。

您还可以使用Non-null断言运算符

const fName: string = 
WidgetTableCols[this.state.sortCol!].toLocaleLowerCase();

如果您确定它存在。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

响应 yup 错误类型“未定义”不能用作索引类型。TS2538

类型'null'不能用作索引类型

类型“{}”不能用作索引类型

类型“X”不能用作索引类型

类型不能用作索引类型

类型'undefined'不能用作索引类型

打字稿错误-类型'string []'不能用作索引类型

类型 '() => Promise<AxiosResponse<any>>' 不能用作索引类型 [ReactJs]

类型 'any[]' 不能用作索引类型 Angular 构建

Typescript:类型'undefined'不能用作索引类型.ts(2538)

错误 TS2538:类型“CCCustomer”不能用作索引类型

为什么我在TypeScript中遇到“类型'String'不能用作索引类型”错误

介质不能用作请求的设备类型

TS2536:即使类型必须是键,也不能用作索引?

打字稿:从嵌套的全局对象访问值 | 键入“字符串”不能用作索引类型

Entity Framework Core:表“Users”中的“Id”列的类型不能用作索引中的键列

包的类型不能用作供应商的包的类型

F#-类型参数不能用作类型构造函数

C ++类型索引哈希导致未定义的行为

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

类型“ N [P]”不能用于索引类型“ IComponents <N>”

类型'string'不能用于索引类型'T'.ts(2536)

类型“ test”不能用于索引类型“ T”

类型 'string' 不能用于索引类型 'Partial<T>

Golang不能用作类型struct数组或slice文字

为什么“ kotlin.Result”不能用作返回类型?

TypeScript 联合类型不能用作数组

未定义的方法类型

使用未定义的类型