加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

TypeScript 字面量类型介绍

发布时间:2023-03-30 08:56:09 所属栏目:教程 来源:
导读:在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。

通俗的讲,字面量也可以叫直接量,就是你看见什么,它就是什么。

我们之前介绍字符串类型,其实是一个集合类型,所有的
在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。

通俗的讲,字面量也可以叫直接量,就是你看见什么,它就是什么。

我们之前介绍字符串类型,其实是一个集合类型,所有的字符串集合在一起构成了 string 类型。而字符串字面量类型就直接多了,你定义为 'imooc',那这个变量的类型就是 'imooc' 类型。

字符串字面量类型允许你指定字符串必须的固定值。

let protagonist: 'Sherlock'
protagonist = 'Sherlock'
protagonist = 'Watson' // Error, Type '"Watson"' is not assignable to type '"Sherlock"'
代码解释: 变量 protagonist 被声明为 'Sherlock' 字面量类型,就只能赋值为 'Sherlock'。

type Easing = 'ease-in' | 'ease-out' | 'ease-in-out'
class UIElement {
  animate(dx: number, dy: number, easing: Easing) {
      if (easing === 'ease-in') {}
      else if (easing === 'ease-out') {}
      else if (easing === 'ease-in-out') {}
      else {
          // Error, 不应该传递 null 或 undefined
      }
  }
}
let button = new UIElement()
button.animate(, , 'ease-in')
button.animate(, , 'uneasy') // Error, 'uneasy' 不被允许
代码解释:

第 1 行,通过类型别名,声明了类型 Easing 为 'ease-in' | 'ease-out' | 'ease-in-out'
这样三个字符串字面量构成的联合类型。

第 4 行,你只能从三种允许的字符中选择其一来做为参数传递,传入其它值则会产生错误。

字符串字面量类型还可以用于区分函数重载:

function createElement(tagName: 'img'): HTMLImageElement
function createElement(tagName: 'input'): HTMLInputElement
function createElement(tagName: string): Element {}
代码解释:

如果参数 tagName 为 'img' 类型,返回值类型为 HTMLImageElement; 如果参数 tagName 为 'input' 类型,返回值类型为 HTMLInputElement。

声明布尔字面量类型,注意这里是 : 不是 =。 = 等号是变量赋值,: 表示声明的类型。

let success: true
let fail: false
let value: true | false
接口的返回值,会有正确返回和异常两种情况,这两种情况要有不同的数据返回格式:

type Result = { success: true, code: number, object: object } | { success: false, code: number, errMsg: string }
let res: Result = { success: false, code: , errMsg: '该二维码已使用' }
if (!res.success) {
  res.errMsg // OK
  res.object // Error, Property 'object' does not exist on type '{ success: false; code: number; errMsg: string; }
}
代码解释:

类型别名 Result 是一个由两个对象组成的联合类型,都有一个共同的 success 属性,这个属性的类型就是布尔字面量类型。因为涉及很多后续才会介绍的知识点,这里看不懂没关系,只需要大概了解这是布尔字面量类型的一种应用即可。

TypeScript 还具有数字字面量类型。

比如骰子只有六种点数:

let die:  |  |  |  |  | 
die =  // Error

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章