Abh*_*D K 9 typescript reactjs
我正在使用TypeScript Tutorial关注WintellectNow React.在第五部分中,作者进行排序和过滤,创建一个具有可选属性的界面,如下所示:
interface IWidgetToolState {
filterCol?: WidgetTableCols;
filterValue?: string;
sortCol?: WidgetTableCols;
}
Run Code Online (Sandbox Code Playgroud)
有一个名为WidgetTableCols的枚举如下:
enum WidgetTableCols {
None, Name, Color, Size, Quantity, Price,
}
Run Code Online (Sandbox Code Playgroud)
在函数中,作者获取枚举的值,如下所示:
const fName: string =
WidgetTableCols[this.state.sortCol].toLocaleLowerCase();
Run Code Online (Sandbox Code Playgroud)
这里我得到Type'undefined'不能用作索引类型.如果我删除?从接口工作,但后来作者创建了另一个只设置状态值和打字稿之一的函数,表示并未设置所有状态属性.
任何人都可以让我知道如何解决这个问题.
提前致谢.
Nit*_*mer 15
编译器只是告诉你this.state.sortCol可能没有值,因为你有strictNullChecks标志.
您可以先检查它是否存在:
const fName = this.state.sortCol != null ?
WidgetTableCols[this.state.sortCol].toLocaleLowerCase() : null;
Run Code Online (Sandbox Code Playgroud)
这将删除错误(但您将需要处理fName可以为null 的事实).
您还可以使用非null断言运算符:
const fName: string =
WidgetTableCols[this.state.sortCol!].toLocaleLowerCase();
Run Code Online (Sandbox Code Playgroud)
如果你确定它存在.
| 归档时间: |
|
| 查看次数: |
4518 次 |
| 最近记录: |