美文网首页
学习TypeScrip(原始数据类型2)

学习TypeScrip(原始数据类型2)

作者: jamesXiao_ | 来源:发表于2023-04-25 09:00 被阅读0次

    1.Symbol类型

    自ECMAScript 2015起,symbol成为了一种新的原始类型,就像numberstring一样。

    // symbol类型的值是通过Symbol构造函数创建的。
    
    let sym1 = Symbol();
    let sym2 = Symbol("key"); // 可选的字符串key
    
    // Symbols是不可改变且唯一的。
    let sym2 = Symbol("key");
    let sym3 = Symbol("key");
    
    sym2 === sym3; // false, symbols是唯一的
    
    // 像字符串一样,symbols也可以被用做对象属性的键。
    let sym = Symbol();
    
    let obj = {
        [sym]: "value"
    };
    
    console.log(obj[sym]); // "value"
    
    // Symbols也可以与计算出的属性名声明相结合来声明对象的属性和类成员。
    const getClassNameSymbol = Symbol();
    
    class C {
        [getClassNameSymbol](){
           return "C";
        }
    }
    
    let c = new C();
    let className = c[getClassNameSymbol](); // "C"
    

    2.Never类型

    never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。

    never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

    // 返回never的函数必须存在无法达到的终点
    function error(message: string): never {
      throw new Error(message);
    }
    
    // 推断的返回值类型为never
    function fail() {
      return error("Something failed");
    }
    
    // 返回never的函数必须存在无法达到的终点
    function infiniteLoop(): never {
      while (true) {
      }
    }
    
    never类型.png

    相关文章

      网友评论

          本文标题:学习TypeScrip(原始数据类型2)

          本文链接:https://www.haomeiwen.com/subject/qldkrdtx.html