什么是Typescript
Never
Never类型表示的是那些永不存在的值的类型。
使用小写的never声明一个Never类型,如下:
let ne:never
(1).总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型。
(2).变量也可能是Never类型,当它们被永不为真的类型保护所约束时。
Never类型是任何类型的子类型,可以赋值给任何类型;没有类型是Never的子类型或可以赋值给Never类型(除了Never本身)。 即使 Any类型也不可以赋值给Never类型。
never
类型表示的是那些永不存在的值的类型。 例如, never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never
类型,当它们被永不为真的类型保护所约束时。
never
类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never
的子类型或可以赋值给never
类型(除了never
本身之外)。 即使 any
也不可以赋值给never
。
下面是一些返回never类型的函数:
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error("Something failed"); } // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }</pre>
类型断言
类型断言好比其它语言里的类型转换
类型断言有两种形式。 其一是“尖括号”语法:
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length;</pre>
另一个为as语法:
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;</pre>
网友评论