在 TypeScript 中使用字典

字典是日常开发中使用频率很高的一种数据结构,在进行名值转换的时候很方便。比如一个任务的执行状态,有“已执行”和“未执行”两种状态,在数据库里存的可能是1和0,在界面上显示的时候就需要转化成其代表的含义。

我们可以定义这样一个字典结构:

const taskStatus = {  '0': '未执行',  '1': '已执行'}

然后我们可以定义一个函数来从字典中获取状态名

function getStatusName(key) {  return taskStatus[key] || ''}

但是这样写的话,TypeScript会报错:

Parameter 'key' implicitly has an 'any' type. Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{ '0': string; '1': string; }'.

原因是变量key和字典索引的类型不匹配。

那么该怎样解决这个问题呢?

一种解决方案是在取值时通过类型断言来缩小key的类型:

function getStatusName(key:string):string {  return taskStatus[key as keyof typeof taskStatus]}

这样能解决报错的问题,但不是最佳解决方案,类型断言应该在没有其他更好的解决办法的情况下使用,这里显然不是。

更好方法是缩小函数参数的类型:

function getStatusName(key:keyof typeof taskStatus):string {  return taskStatus[key]}

这样TypeScript就能正确识别key的类型了

欢迎关注公众号:清晰编程,获取更多精彩内容

相关推荐

  1. typescript使用 ?. ?? ??= 运算符

    2024-06-08 23:20:04       52 阅读
  2. vue字典使用

    2024-06-08 23:20:04       54 阅读
  3. TypeScript 前端开发的应用

    2024-06-08 23:20:04       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 23:20:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 23:20:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 23:20:04       87 阅读
  4. Python语言-面向对象

    2024-06-08 23:20:04       96 阅读

热门阅读

  1. 如何轻松修改Windows远程连接的端口号

    2024-06-08 23:20:04       35 阅读
  2. Oracle数据库面试题-4

    2024-06-08 23:20:04       25 阅读
  3. 【Vue】Vue路由-模式设置

    2024-06-08 23:20:04       30 阅读
  4. 7-16 二分查找

    2024-06-08 23:20:04       27 阅读
  5. XSS跨站脚本攻击

    2024-06-08 23:20:04       27 阅读
  6. 12寸晶圆厂建设概述

    2024-06-08 23:20:04       28 阅读
  7. [知识点]C 标准库常用字符串处理函数

    2024-06-08 23:20:04       34 阅读