TypeScript 中的字面量是什么意思

3,148 阅读2分钟

前言

阅读 TypeScript 文档的时候,字面量 这个词出现的频率还挺高,虽然不理解它的意思也不影响阅读,但看到 字面量 扎堆出现的时候,还是想知道 字面量 到底是什么意思。

TypeScript 文档片段截图

TypeScript 文档中出现过哪些字面量

文档中大概出现过以下几种名词:

  • 数字字面量
  • 字符串字面量
  • 十六进制字面量
  • 对象字面量
  • 数组字面量
  • 枚举表达式字面量
  • 函数字面量

字面量名词对应的程序

  1. 数字字面量
    const num: number = 1;
    
  2. 字符串字面量
    const str: string = 'foo';
    
  3. 十六进制字面量(其他进制类似)
    const hexLiteral: number = 0xf00d;
    
  4. 对象字面量
    const obj = { x: 10, y: 20 };
    
  5. 数组字面量
    const numArr:Array<number> = [0,1,2,3];
    
  6. 枚举(常量)表达式字面量
    enum Response {
        No = 0,
        Yes = 1,
    }
    
  7. 函数字面量
    const fn = (x)=>{ alert(x); }
    

什么是字面量

在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法。

这是百度百科的解释,可能不太好理解。但是从上面的程序我们可以分析出: = 右边是什么类型,那么这个字面量就被称作该类型的字面量。引用 深入理解 TypeScript 文章中的解释:字面量是 JavaScript 本身提供的一个准确变量。

举个例子

const hexLiteral: number = 0xf00d;

以上代码中,hexLiteral 为定义的常量,0xf00d 为十六进制字面量,如果我们给 0xf00d 加个引号,则 '0xf00d' 就被称之为字符串字面量。


let hexLiteral: number = '0xf00d';

以上代码中,hexLiteral 为定义的变量, '0xf00d' 为字符串字面量。因此我们可以得出结论,字面量 其实就是用来精准描述 = 右边的一个名词而已。


let boo:boolean = true;

以上代码中,boo 为定义的变量, true 为布尔字面量。

总结

字面量 其实就是用来精准描述 = 右边的一个名词而已。理解了这个名词,阅读 TypeScript 文档再也不需要纠结这个名词是什么意思了。

参考链接

深入理解 TypeScript:jkchao.github.io/typescript-…