TypeScript基础笔记——never类型(TS -- 12)

简介: never类型(TS -- 12)


TypeScript将使用 never 类型来表示不应该存在的状态

返回never的函数必须存在无法达到的终点

functionerror(message:string):never {//因为必定抛出异常,所以 error 将不会有返回值

   thrownewError(message)

}

functionloop():never{

   while(true){

       //因为这个是死循环,永远不会去返回的

   }

}

interfaceA{

   type:"保安"

}

interfaceB{

   type:"草莓"

}

interfaceC{

   type:"卷心菜"

}

typeAll=A|B

functiontype(val:All){

   while(val.type){

       case"保安":break

       case"草莓":break

       //case "卷心菜":break

       default://兜底机制,此时C没有用上就会报错提示。这就算never的作用

       constcheck:never=val

       break

   }

}

Symbol类型

symbol 是一种新的原生类型,就像 numberstring 一样

symbol类型的值是通过Symbol构造函数创建的

可以传递参做为唯一标识 只支持 string 和 number 类型的参数

lets:symbol=Symbol('小满')

letnum:symbol=Symbol('小满')

letobj= {

   [num] ="value"//Symbol

   [s] ="草莓"//Symbol

   name:"小满"

   sex:"男"

}

console.log(obj.[num])//取到value

console.log(s,num)//返回Symbol(小满)Symbol(小满)

console.log(s===num)//false

//这个值看似一样,其实因为内存地址指针位置不同,所以是唯一值

for(letkeyinboj){

   console.log(key)

}//只会打印出name跟sex,[num]与[s]将打印不出来

console.log(Object.keys(obj))//["name","sex"]

console.log(Object.getOwnPropertyNames(obj))//["name","sex"],跟上面一样,打印不出来

console.log(JSON.stringify(obj));//["name":"小满","sex":"男"],一样打印不出来

能够读取到Symbol的两种方式

静态方法 Reflect.ownKeys() 返回一个由目标对象自身的属性键组成的数组(Array)。

语法:Reflect.ownKeys(target)   =>  target获取自身属性键的目标对象。

Reflect.ownKeys 方法返回一个由目标对象自身的属性键组成的数组。它的返回值等同于 Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))

console.log(Object.getOwnPropertySymbol(obj));//能打印出来两个Symbol,另外两个普通的不会打印出来

Reflect.ownKeys()//此属性是将所有的属性都列出来

console.log(Reflect.ownKeys())//四个全部圆满的打印出来

目录
相关文章
|
9天前
|
JavaScript
typeScript进阶(9)_type类型别名
本文介绍了TypeScript中类型别名的概念和用法。类型别名使用`type`关键字定义,可以为现有类型起一个新的名字,使代码更加清晰易懂。文章通过具体示例展示了如何定义类型别名以及如何在函数中使用类型别名。
26 1
typeScript进阶(9)_type类型别名
|
9天前
|
JavaScript
typeScript基础(3)_ts函数默认值和可选参数
本文介绍了在TypeScript中如何使用函数的默认值和可选参数。展示了如何为函数参数指定默认值,使得在调用函数时可以省略某些参数,以及如何定义可选参数。
29 2
|
9天前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
25 1
|
9天前
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
21 0
|
9天前
|
JavaScript
typeScript进阶(10)_字符串字面量类型
本文介绍了TypeScript中的字符串字面量类型,这种类型用来限制变量只能是某些特定的字符串字面量。通过使用`type`关键字声明,可以确保变量的值限定在预定义的字符串字面量集合中。文章通过示例代码展示了如何声明和使用字符串字面量类型,并说明了它在函数默认参数中的应用。
22 0
|
9天前
|
JavaScript 前端开发
typeScript基础(8)_ts类型断言
本文介绍了TypeScript中的类型断言,它用于在编译时告诉TypeScript某个对象具有特定的类型,即使它看起来不具备。类型断言可以用来访问一个类型上存在而另一个类型上不存在的属性或方法。需要注意的是,类型断言并不会在运行时改变JavaScript的行为,因此如果断言不当,运行时仍然可能出错。文章还提醒避免将类型断言为`any`类型或进行多重断言。
12 1
|
9天前
|
JavaScript
typeScript基础(6)_数组类型
本文介绍了TypeScript中数组的类型表示方法,包括直接使用类型加`[]`定义数组类型,以及使用数组泛型`Array<类型>`定义数组。同时,还展示了如何定义包含多种数据类型的数组。
21 1
|
7天前
|
JavaScript 前端开发 编译器
TypeScript,从0到入门带你进入类型的世界
该文章提供了TypeScript的入门指南,从安装配置到基础语法,再到高级特性如泛型、接口等的使用,帮助初学者快速掌握TypeScript的基本用法。
|
9天前
|
JavaScript
typeScript基础(7)_函数的类型
本文介绍了TypeScript中函数的类型,包括函数声明与函数表达式的类型注解,如何定义函数的参数类型、返回类型,以及可选参数和参数默认值。还探讨了函数的剩余参数、如何使用接口定义函数的形状,以及函数重载的概念和实践。
10 0
|
9天前
|
JavaScript
typeScript基础(2)_any任意值类型和类型推论
本文介绍了TypeScript中的`any`任意值类型,它可以赋值为其他任何类型。同时,文章还解释了TypeScript中的类型推论机制,即在没有明确指定类型时,TypeScript如何根据变量的初始赋值来推断其类型。如果变量初始化时未指定类型,将被推断为`any`类型,从而允许赋予任何类型的值。
26 4
下一篇
无影云桌面