TypeScript 与 JavaScript

背景:TypeScript 起源于使用JavaScript开发的大型项目 。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此微软开发了TypeScript ,使得其能够胜任开发大型项目。

 

Typescript是JavaScript的 类型化超集,它支持所有JavaScript的语法,我们可以在ts中使用原生js语法

 

JS,属于动态类型语言在运行时才知道错误

TS,静态类型语言在编译时就会知道错误

 

TS是强类型语言,需要强制转换类型

JS是弱类型,会根据环境变化自动转换类型

不过ts最终还是需要编译成js(es5)来运行

 

never:

never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;

变量也可能是 never类型,当它们被永不为真的类型保护所约束时。

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

never只在下面两种情况使用(不能被顺利完成执行,或者发生中断(抛异常))

  • 函数永远不会有返回值时,例如 while(true){}
  const [n,setN] = React.useState<number>(1)
  const add: ()=>never = () => {
      while(true){ setN(i=>i+1) }
  }
  • 函数永远会抛出一个错误时。
  const fn: ()=>never = () => {
      throw new Error('error')
  }
  • 与void的差异

void 和 never 都是表示一个函数没有返回值,但是他们之间最大的区别是,void 表示可以被赋值的类型never表示其他任何类型也不能被赋值给它,它只能是never

 

posted @ 2021-10-02 23:12  养只猫叫土豆  阅读(268)  评论(0编辑  收藏  举报