我是Typescript的新手,我有以下类型和界面的数独游戏:
export type GridCellValue = 1|2|3|4|5|6|7|8|9;
export interface GridCell {
readonly: boolean,
value: GridCellValue|null,
}
export type Grid = Array<Array<GridCell>>
数独网格中的单元格是HTMLInputElement
,当它们的输入改变时,它们会触发InputEvent
(Vue
的@input
指令)。
我的验证函数如下:
function validate_input(ev: InputEvent) {
const input_string: string = ev.data ?? '';
const grid_cell_value_regex = /^([123456789])$/;
const value = grid_cell_value_regex.test(input_string) ? input_string : '';
if (ev.target === null)
return;
const el = ev.target as HTMLInputElement;
el.value = value;
}
我想要的是一种更好的方法来检查input_string
是否可以转换为GridCellValue
,而不必使用Regex,这可能吗?
我尝试使用instanceof
和is
来检查,但它不起作用。
1条答案
按热度按时间ctehm74n1#
Use a type-narrowing function(也称为“类型保护”)与
valueAsNumber
(为您进行解析)结合使用范围检查,如下所示: